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
- EncryptedData.cs
- GreenMethods.cs
- BinaryFormatter.cs
- MemoryRecordBuffer.cs
- DataError.cs
- XmlSchemaAnnotated.cs
- TextClipboardData.cs
- UiaCoreTypesApi.cs
- SqlRecordBuffer.cs
- SafePointer.cs
- FileAuthorizationModule.cs
- WebPartTransformerCollection.cs
- HtmlAnchor.cs
- BamlTreeMap.cs
- ListViewItemCollectionEditor.cs
- DesignerVerbToolStripMenuItem.cs
- UrlMappingCollection.cs
- MessageAction.cs
- PenLineJoinValidation.cs
- Baml2006SchemaContext.cs
- SupportedAddressingMode.cs
- DataTableTypeConverter.cs
- ColumnResult.cs
- RelationshipType.cs
- MetadataArtifactLoaderFile.cs
- PackageDigitalSignature.cs
- WebPartConnectionsEventArgs.cs
- WebPartExportVerb.cs
- ProfileInfo.cs
- UIElement3D.cs
- SByte.cs
- GradientStop.cs
- SettingsAttributeDictionary.cs
- CodeExporter.cs
- SHA256CryptoServiceProvider.cs
- Span.cs
- FileDialogPermission.cs
- MouseGestureValueSerializer.cs
- ColorTranslator.cs
- FixedSOMTable.cs
- DataGridItemCollection.cs
- SqlUdtInfo.cs
- SelectionHighlightInfo.cs
- cache.cs
- ProcessHostMapPath.cs
- XPathBuilder.cs
- Geometry3D.cs
- EnumerableCollectionView.cs
- DataObjectPastingEventArgs.cs
- AxHost.cs
- ActiveXHost.cs
- WindowsListBox.cs
- QuaternionAnimationBase.cs
- LinkUtilities.cs
- Repeater.cs
- ImageBrush.cs
- SynchronizationHandlesCodeDomSerializer.cs
- DataFieldCollectionEditor.cs
- SecurityPolicySection.cs
- SoapFault.cs
- latinshape.cs
- NegationPusher.cs
- MetadataItemEmitter.cs
- CompiledRegexRunner.cs
- UrlRoutingHandler.cs
- ExpandCollapsePattern.cs
- HttpPostedFile.cs
- ListViewDeleteEventArgs.cs
- ObjectCacheSettings.cs
- DeploymentSectionCache.cs
- Panel.cs
- IImplicitResourceProvider.cs
- ClaimTypes.cs
- EnumMember.cs
- DataSourceControl.cs
- UmAlQuraCalendar.cs
- XamlFilter.cs
- DropAnimation.xaml.cs
- UnitControl.cs
- TreeViewAutomationPeer.cs
- AspNetSynchronizationContext.cs
- ExtensionQuery.cs
- ImageBrush.cs
- NativeMethods.cs
- Camera.cs
- BamlBinaryReader.cs
- mansign.cs
- TextShapeableCharacters.cs
- FramingDecoders.cs
- XmlSchemaAppInfo.cs
- userdatakeys.cs
- Errors.cs
- ActiveXHelper.cs
- DataServiceExpressionVisitor.cs
- DeleteBookmarkScope.cs
- HwndTarget.cs
- XamlParser.cs
- ToolStripSettings.cs
- DataControlPagerLinkButton.cs
- RootDesignerSerializerAttribute.cs