public void PushBlock(FileBlock block) { lock (_blockQueue) { BlocksQueue.Enqueue(block); Monitor.PulseAll(_blockQueue); } }
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); } }
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(); } }
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)); } }
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)); } }