Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Sys / System / IO / compression / CopyEncoder.cs / 1305376 / CopyEncoder.cs
namespace System.IO.Compression { using System.Diagnostics; internal class CopyEncoder { // padding for copy encoder formatting // - 1 byte for header // - 4 bytes for len, nlen private const int PaddingSize = 5; // max uncompressed deflate block size is 64K. private const int MaxUncompressedBlockSize = 65536; // null input means write an empty payload with formatting info. This is needed for the final block. public void GetBlock(DeflateInput input, OutputBuffer output, bool isFinal) { Debug.Assert(output != null); Debug.Assert(output.FreeBytes >= PaddingSize); // determine number of bytes to write int count = 0; if (input != null) { // allow space for padding and bits not yet flushed to buffer count = Math.Min(input.Count, output.FreeBytes - PaddingSize - output.BitsInBuffer); // we don't expect the output buffer to ever be this big (currently 4K), but we'll check this // just in case that changes. if (count > MaxUncompressedBlockSize - PaddingSize) { count = MaxUncompressedBlockSize - PaddingSize; } } // write header and flush bits if (isFinal) { output.WriteBits(FastEncoderStatics.BFinalNoCompressionHeaderBitCount, FastEncoderStatics.BFinalNoCompressionHeader); } else { output.WriteBits(FastEncoderStatics.NoCompressionHeaderBitCount, FastEncoderStatics.NoCompressionHeader); } // now we're aligned output.FlushBits(); // write len, nlen WriteLenNLen((ushort)count, output); // write uncompressed bytes if (input != null && count > 0) { output.WriteBytes(input.Buffer, input.StartIndex, count); input.ConsumeBytes(count); } } private void WriteLenNLen(ushort len, OutputBuffer output) { // len output.WriteUInt16(len); // nlen ushort onesComp = (ushort)(~(ushort)len); output.WriteUInt16(onesComp); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.IO.Compression { using System.Diagnostics; internal class CopyEncoder { // padding for copy encoder formatting // - 1 byte for header // - 4 bytes for len, nlen private const int PaddingSize = 5; // max uncompressed deflate block size is 64K. private const int MaxUncompressedBlockSize = 65536; // null input means write an empty payload with formatting info. This is needed for the final block. public void GetBlock(DeflateInput input, OutputBuffer output, bool isFinal) { Debug.Assert(output != null); Debug.Assert(output.FreeBytes >= PaddingSize); // determine number of bytes to write int count = 0; if (input != null) { // allow space for padding and bits not yet flushed to buffer count = Math.Min(input.Count, output.FreeBytes - PaddingSize - output.BitsInBuffer); // we don't expect the output buffer to ever be this big (currently 4K), but we'll check this // just in case that changes. if (count > MaxUncompressedBlockSize - PaddingSize) { count = MaxUncompressedBlockSize - PaddingSize; } } // write header and flush bits if (isFinal) { output.WriteBits(FastEncoderStatics.BFinalNoCompressionHeaderBitCount, FastEncoderStatics.BFinalNoCompressionHeader); } else { output.WriteBits(FastEncoderStatics.NoCompressionHeaderBitCount, FastEncoderStatics.NoCompressionHeader); } // now we're aligned output.FlushBits(); // write len, nlen WriteLenNLen((ushort)count, output); // write uncompressed bytes if (input != null && count > 0) { output.WriteBytes(input.Buffer, input.StartIndex, count); input.ConsumeBytes(count); } } private void WriteLenNLen(ushort len, OutputBuffer output) { // len output.WriteUInt16(len); // nlen ushort onesComp = (ushort)(~(ushort)len); output.WriteUInt16(onesComp); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AnimatedTypeHelpers.cs
- CqlGenerator.cs
- URI.cs
- AncestorChangedEventArgs.cs
- SqlRowUpdatingEvent.cs
- MailHeaderInfo.cs
- DataGridViewCellFormattingEventArgs.cs
- BamlTreeMap.cs
- ToolStripStatusLabel.cs
- PixelShader.cs
- ProxyHwnd.cs
- HttpFileCollection.cs
- ArgumentDesigner.xaml.cs
- SerialPinChanges.cs
- XslCompiledTransform.cs
- FormViewPagerRow.cs
- ClientType.cs
- ListChangedEventArgs.cs
- ProxyWebPartConnectionCollection.cs
- AnimationTimeline.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ThreadStaticAttribute.cs
- XmlMembersMapping.cs
- Stroke2.cs
- RepeaterItemCollection.cs
- AuthenticationService.cs
- OdbcUtils.cs
- XmlILOptimizerVisitor.cs
- DefaultShape.cs
- FormatterServices.cs
- XmlSchemaAppInfo.cs
- LinearGradientBrush.cs
- XmlTextAttribute.cs
- CompilerLocalReference.cs
- ManagementObjectCollection.cs
- FlowDocumentPaginator.cs
- SizeAnimation.cs
- ShaderEffect.cs
- Automation.cs
- CapabilitiesSection.cs
- TraceContextRecord.cs
- TempFiles.cs
- PropertyDescriptors.cs
- dtdvalidator.cs
- EditorZone.cs
- DebugView.cs
- DelegatingChannelListener.cs
- OlePropertyStructs.cs
- WorkItem.cs
- BaseResourcesBuildProvider.cs
- MdiWindowListStrip.cs
- Base64Encoder.cs
- SafeArchiveContext.cs
- SevenBitStream.cs
- NamedPipeAppDomainProtocolHandler.cs
- Regex.cs
- Decorator.cs
- BaseResourcesBuildProvider.cs
- GeneralTransformGroup.cs
- XslCompiledTransform.cs
- SystemNetHelpers.cs
- HtmlInputText.cs
- CompositeScriptReferenceEventArgs.cs
- AppModelKnownContentFactory.cs
- FillRuleValidation.cs
- SafeReversePInvokeHandle.cs
- DynamicDiscoveryDocument.cs
- ResourceExpression.cs
- AnimationException.cs
- DataSourceCache.cs
- SemanticResolver.cs
- ServerValidateEventArgs.cs
- RightsManagementResourceHelper.cs
- SendSecurityHeader.cs
- EncoderReplacementFallback.cs
- MLangCodePageEncoding.cs
- MultiByteCodec.cs
- VectorCollectionValueSerializer.cs
- FieldMetadata.cs
- Compiler.cs
- Visitor.cs
- XmlCountingReader.cs
- RegexMatch.cs
- PrintingPermission.cs
- DictationGrammar.cs
- VariantWrapper.cs
- GenericTypeParameterBuilder.cs
- Int16AnimationUsingKeyFrames.cs
- TextModifierScope.cs
- MultipleViewProviderWrapper.cs
- EntitySqlException.cs
- SessionIDManager.cs
- Wildcard.cs
- AssemblyAttributes.cs
- _SSPISessionCache.cs
- WebScriptMetadataInstanceContextProvider.cs
- File.cs
- LinqTreeNodeEvaluator.cs
- EditorAttribute.cs
- ProjectionCamera.cs