private void ProcessCreate(string filename, Stream data) { var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _syncDir, filename); using (var fileStream = File.Create(filePath)) { data.Seek(0, SeekOrigin.Begin); data.CopyTo(fileStream); } var signatureFilename = OctodiffHelper.GetSignatureName(filePath); var signaturePath = Path.Combine(_tmpDir, signatureFilename); OctodiffHelper.BuildSignature(filePath, signaturePath); }
//private void AddAtWorkStatus(FileAction fileAction) //{ // while (!_filesInTheWork.TryAdd(fileAction.FilePath, fileAction.ActionType)) // { // Task.Delay(1000); // } //} //private bool IsOperationNeedToContinue(FileAction fileAction) //{ // if (!_filesInTheWork.ContainsKey(fileAction.FilePath)) // return true; // FileActionType actionType; // while (!_filesInTheWork.TryGetValue(FileAction.File)); // return true; //} //private void RemoveAtWorkStatus(FileAction fileAction) //{ // while (!_filesInTheWork.TryRemove(fileAction.FilePath, out FileActionType type)) // { // Task.Delay(1000); // } //} private void CreateRoutine(FileAction fileAction) { var filePath = fileAction.FilePath; var signatureFilename = OctodiffHelper.GetSignatureName(filePath); var signatureFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _tempDirectory, signatureFilename); if (File.Exists(signatureFilePath)) { ChangeRoutine(new FileAction(filePath, FileActionType.Changed)); return; } OctodiffHelper.BuildSignature(filePath, signatureFilePath); byte[] file; using (var SourceStream = File.Open(fileAction.FilePath, FileMode.Open)) { file = new byte[SourceStream.Length]; SourceStream.Read(file, 0, (int)SourceStream.Length); } _httpSender.SendCreate(file, filePath); }