Пример #1
0
 public void PushBlock(FileBlock block)
 {
     lock (_blockQueue)
     {
         BlocksQueue.Enqueue(block);
         Monitor.PulseAll(_blockQueue);
     }
 }
Пример #2
0
 private void WriteBlock(string file, FileBlock block)
 {
     using (var outStream = new FileStream(file, FileMode.OpenOrCreate, FileAccess.Write))
         using (var binaryWriter = new BinaryWriter(outStream))
         {
             outStream.Position = block.WriteOffset;
             outStream.Write(block.Data, 0, block.Data.Length);
         }
 }
Пример #3
0
 private void WriteBlock(string file, FileBlock block)
 {
     using (var outStream = new FileStream(file, FileMode.OpenOrCreate, FileAccess.Write))
         using (var binaryWriter = new BinaryWriter(outStream))
         {
             outStream.Position = _witeHeaderOffset;
             binaryWriter.Write(block.Data.Length);
             binaryWriter.Write((int)block.ReadOffset);
             _witeHeaderOffset += sizeof(int) * 2;
             outStream.Position = _writeDataOffset;
             binaryWriter.Write(block.Data);
             _writeDataOffset += block.Data.Length;
             binaryWriter.Flush();
         }
 }
Пример #4
0
 private void ReadBlock(string filename, FileBlock block)
 {
     try
     {
         using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
             using (var stream = new MemoryStream())
                 using (var gzip = new GZipStream(fileStream, CompressionMode.Decompress))
                 {
                     fileStream.Position = block.ReadOffset;
                     gzip.CopyTo(stream);
                     block.Data = stream.ToArray();
                 }
     }
     catch (Exception e)
     {
         block.HasError = true;
         _logger.Error(e, string.Format("An error occurred while preparing block (offset = {0}, size = {1}) of decompressed file", block.ReadOffset, block.Size));
     }
 }
Пример #5
0
 private void ReadBlock(string path, FileBlock block)
 {
     try
     {
         using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
             using (var stream = new MemoryStream())
             {
                 using (var gzip = new GZipStream(stream, CompressionMode.Compress))
                 {
                     fileStream.Position = block.ReadOffset;
                     var buffer = new byte[block.Size];
                     fileStream.Read(buffer, 0, block.Size);
                     gzip.Write(buffer, 0, block.Size);
                 }
                 block.Data = stream.ToArray();
             }
     }
     catch (Exception e)
     {
         block.HasError = true;
         _logger.Error(e, string.Format("An error occurred while preparing block (offset = {0}, size = {1}) of compressed file", block.ReadOffset, block.Size));
     }
 }