public FileSaveStatus Send(UserIdentity userIdentity, FileTransferObject obj) { if (_serverSidePresentationSchemaTransfer.Contains(userIdentity)) return _serverSidePresentationSchemaTransfer.Send(userIdentity, obj); else if (_serverSidePresentationTransfer.Contains(userIdentity)) return _serverSidePresentationTransfer.Send(userIdentity, obj); return FileSaveStatus.Abort; }
public FileTransferObject? Receive(string resourceId) { try { if (_part == -1) { // первый вызов - определяем число частей //_numberOfParts = (int)(_resourceFileInfo.ResourceFileList.Find(rfp => rfp.Id.Equals(resourceId)).Length / (Constants.PartSize + 1)) + 1; _numberOfParts = _provider.GetNumberOfParts(resourceId); //_fileName = _resourceEx.GetResourceFileName(Resource, resourceId); _fileName = _provider.GetFileName(resourceId); _lastModifyDateTime = File.GetLastWriteTime(_fileName); } _part++; if (!File.GetLastWriteTime(_fileName).Equals(_lastModifyDateTime)) { throw new Exception("Запрашиваемый Вами ресурс был изменен со времени последнего доступа"); } if (_part >= _numberOfParts) { throw new Exception("Все части файла уже получены"); } byte[] buffer = new byte[Constants.PartSize]; int count; using (FileStream file = new FileStream(_fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { file.Seek(_part*Constants.PartSize, SeekOrigin.Begin); count = file.Read(buffer, 0, buffer.Length); } FileTransferObject obj = new FileTransferObject(count, _part, _numberOfParts, resourceId, buffer); if (_part + 1 == _numberOfParts) _part = -1; return obj; } catch { Abort(this, EventArgs.Empty); throw; } }
public FileSaveStatus Send(UserIdentity userIdentity, FileTransferObject obj) { throw new System.NotImplementedException(); }
public FileSaveStatus Send(UserIdentity userIdentity, FileTransferObject obj) { return _serverSideSourceTransfer.Send(userIdentity, obj); }
public bool Save(FileTransferObject obj) { lock (this) { if (_wasTerminated == 1) return false; int currentPart = obj.Part; if (currentPart - _part != 1) { if (PartSend == 0) // С докачкой возможно такое, не страшно { //Error(); throw new Exception( string.Format( "FileSaver.Save: неверная последовательность частей файла! Должна придти {0} часть, а пришла {1} часть", _part + 1, currentPart)); } else return false; } _part = currentPart; if (_part == 0) { bool needExit = false; _file = Path.GetFileName(_fileInfoProvider.GetFileName(obj.FileId)); // пришла самая первая часть _currentFileName = _useTempFile ? _fileInfoProvider.GetFileName(obj.FileId) + _tempExt : _fileInfoProvider.GetFileName(obj.FileId); if (_useUploadResume && obj.NumberOfParts>2) { //Если нужна докачка и файл длинный if(File.Exists(_currentFileName)) { //Такой файл уже есть, надо докачивать. FileInfo info=new FileInfo(_currentFileName); long fileSize = info.Length; int partSize = obj.CountToWrite; if(fileSize%partSize == 0) { // Размер файла соответствует размеру блока (тупая проверка) _partSend = Convert.ToInt32(fileSize/partSize); _part = _partSend-1; needExit = true; //return false; } else { File.Delete(_currentFileName); } } } else { File.Delete(_currentFileName); } _currentFileId = obj.FileId; _fileDic[_currentFileId] = _currentFileName; if (needExit) return false; } WriteContentToFile(obj.FileContent, obj.CountToWrite); if (_part + 1 == obj.NumberOfParts) { _part = -1; return true; } return false; } }
public FileSaveStatus Send(UserIdentity userIdentity, FileTransferObject obj) { return _resourceManager.Send(userIdentity, obj); }
public FileSaveStatus Send(UserIdentity userIdentity, FileTransferObject obj) { if (_presentationWorker.IsUserParticipateInResourceTransfer(userIdentity)) return _presentationWorker.Send(userIdentity, obj); if (_configFileExportHelper.IsUserParticipateInResourceTransfer(userIdentity)) return _configFileExportHelper.Send(userIdentity, obj); return FileSaveStatus.Abort; }
public FileSaveStatus Send(UserIdentity userIdentity, FileTransferObject obj) { try { if (_serverSideSourceTransfer.Contains(userIdentity)) return _serverSideSourceTransfer.Send(userIdentity, obj); else if (_serverSidePresentationTransfer.Contains(userIdentity)) return _serverSidePresentationTransfer.Send(userIdentity, obj); else return FileSaveStatus.Abort; } catch (Exception ex) { _configuration.EventLog.WriteError(string.Format("PresentationWorker.Send: userIdentity:{0}, Resource:{1}, \n{2}", userIdentity, obj.FileId, ex)); return FileSaveStatus.Abort; } }