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
- OperationParameterInfoCollection.cs
- CodeStatement.cs
- RichListBox.cs
- DesignerUtils.cs
- TypedOperationInfo.cs
- HtmlTableRowCollection.cs
- Icon.cs
- CapacityStreamGeometryContext.cs
- PropertyMap.cs
- Viewport2DVisual3D.cs
- MenuCommand.cs
- SafeNativeMethods.cs
- SerializeAbsoluteContext.cs
- DateTimeOffsetAdapter.cs
- XmlSchemaComplexContentRestriction.cs
- AQNBuilder.cs
- Stack.cs
- WindowsTab.cs
- XPathDescendantIterator.cs
- MessageSecurityProtocol.cs
- KeyConverter.cs
- GenerateScriptTypeAttribute.cs
- HandlerFactoryCache.cs
- HandlerFactoryWrapper.cs
- ETagAttribute.cs
- AnchoredBlock.cs
- DataTablePropertyDescriptor.cs
- ToolboxItem.cs
- ClientTargetCollection.cs
- QueryResponse.cs
- HandleTable.cs
- LinkButton.cs
- IPCCacheManager.cs
- NTAccount.cs
- XpsFont.cs
- CultureMapper.cs
- QilExpression.cs
- CheckedListBox.cs
- SequentialWorkflowRootDesigner.cs
- DataGridViewColumn.cs
- BatchStream.cs
- ComponentGuaranteesAttribute.cs
- DependencyObjectProvider.cs
- LambdaCompiler.Binary.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- AssemblyBuilder.cs
- AspProxy.cs
- LogoValidationException.cs
- VBCodeProvider.cs
- RelationshipEnd.cs
- HttpHeaderCollection.cs
- TrackingServices.cs
- DLinqAssociationProvider.cs
- OutputCacheProfile.cs
- FieldMetadata.cs
- ImportContext.cs
- WindowPattern.cs
- ContourSegment.cs
- OuterGlowBitmapEffect.cs
- MsmqDiagnostics.cs
- DesignerDataStoredProcedure.cs
- JsonClassDataContract.cs
- X509ClientCertificateAuthentication.cs
- DescendentsWalkerBase.cs
- AnnotationResourceChangedEventArgs.cs
- DataControlLinkButton.cs
- MaterializeFromAtom.cs
- WebExceptionStatus.cs
- Decorator.cs
- TryExpression.cs
- TagMapCollection.cs
- SQLMoneyStorage.cs
- HandlerMappingMemo.cs
- XmlQuerySequence.cs
- BoundField.cs
- SchemaTableOptionalColumn.cs
- XmlLoader.cs
- FontFamily.cs
- BindingMemberInfo.cs
- LocalizableAttribute.cs
- SecureStringHasher.cs
- CodeLabeledStatement.cs
- InputBuffer.cs
- HwndStylusInputProvider.cs
- HttpRequestBase.cs
- TemplateKey.cs
- XmlSchemaChoice.cs
- FontUnit.cs
- CollectionViewGroup.cs
- DeploymentExceptionMapper.cs
- TableColumn.cs
- ResourceDescriptionAttribute.cs
- AssemblyInfo.cs
- TypeBrowser.xaml.cs
- DBSqlParserTable.cs
- AtomContentProperty.cs
- ScopeElement.cs
- HwndHostAutomationPeer.cs
- GradientStopCollection.cs
- TextRangeProviderWrapper.cs