/// <summary> /// Производит расспаковку данных их буфера рабочего элемента и записывает их в выходной поток /// </summary> /// <param name="item">Рабочий элемент</param> protected override void ItemFlush(WorckItem item) { item.MemoryStream.Position = 0; using (var st = new GZipStream(new MemoryStream(item.InputBuffer, 0, item.InputOffset), CompressionMode.Decompress, true)) { st.CopyTo(item.MemoryStream); item.OutputSize = (int)item.MemoryStream.Position; } }
/// <summary> /// Производит расспаковку данных их буфера рабочего элемента и записывает их в выходной поток /// </summary> /// <param name="item">Рабочий элемент</param> protected override void ItemFlush(WorckItem item) { item.MemoryStream.Position = 0; using (var st = new GZipStream(new MemoryStream(item.InputBuffer,0,item.InputOffset), CompressionMode.Decompress,true)) { st.CopyTo(item.MemoryStream); item.OutputSize = (int) item.MemoryStream.Position; } }
/// <summary> /// Производит упаковку данных их буфера рабочего элемента и записывает их в выходной поток /// </summary> /// <param name="item">Рабочий элемент</param> protected override void ItemFlush(WorckItem item) { item.MemoryStream.Position = 8; using (var st = new GZipStream(item.MemoryStream, CompressionMode.Compress, true)) st.Write(item.InputBuffer, 0, item.InputOffset); item.OutputSize = (int)item.MemoryStream.Position; Buffer.BlockCopy(BitConverter.GetBytes(item.OutputSize), 0, item.OutputBuffer, 0, 4); Buffer.BlockCopy(BitConverter.GetBytes(item.Ordinal), 0, item.OutputBuffer, 4, 4); }
/// <summary> /// При переопределении в производном классе, определяет поведение записи данных из рабочего элемента в выходной поток /// </summary> /// <param name="item">Рабочий элемент</param> protected abstract void ItemFlush(WorckItem item);