Beispiel #1
0
        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);
        }
Beispiel #2
0
        //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);
        }