Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ApplicationFileParser.cs
- WindowsRegion.cs
- UserControl.cs
- TdsParserSafeHandles.cs
- LayoutTableCell.cs
- ScrollPatternIdentifiers.cs
- CorePropertiesFilter.cs
- RotateTransform3D.cs
- DocumentApplicationState.cs
- ListSurrogate.cs
- TransformConverter.cs
- SqlMethods.cs
- Choices.cs
- LambdaCompiler.Unary.cs
- QuadraticBezierSegment.cs
- BoundColumn.cs
- AccessibilityHelperForXpWin2k3.cs
- DbDataAdapter.cs
- ByteConverter.cs
- SocketElement.cs
- CompiledIdentityConstraint.cs
- FacetValueContainer.cs
- SelectorAutomationPeer.cs
- TrimSurroundingWhitespaceAttribute.cs
- X509DefaultServiceCertificateElement.cs
- DatagridviewDisplayedBandsData.cs
- TextCompositionManager.cs
- BackgroundWorker.cs
- Pair.cs
- RectangleGeometry.cs
- WebPartsPersonalizationAuthorization.cs
- dsa.cs
- SpecialTypeDataContract.cs
- ControlBuilderAttribute.cs
- HttpWriter.cs
- DurableErrorHandler.cs
- GeneralTransform.cs
- HtmlElement.cs
- DataGridViewCellConverter.cs
- MessageQueuePermissionEntry.cs
- Rotation3DAnimationUsingKeyFrames.cs
- RowUpdatingEventArgs.cs
- Stack.cs
- LocationReferenceEnvironment.cs
- _NestedSingleAsyncResult.cs
- ObjectDataSourceView.cs
- ComponentDispatcher.cs
- Scheduling.cs
- PolyBezierSegment.cs
- SchemaNamespaceManager.cs
- MulticastOption.cs
- MessageSecurityVersion.cs
- PenCursorManager.cs
- TextRangeBase.cs
- CellNormalizer.cs
- ArgIterator.cs
- DuplicateDetector.cs
- DataGridViewComponentPropertyGridSite.cs
- UnmanagedMemoryStream.cs
- XAMLParseException.cs
- DynamicEndpoint.cs
- COM2PictureConverter.cs
- WindowShowOrOpenTracker.cs
- SerialReceived.cs
- StateItem.cs
- ExpressionEditorSheet.cs
- SchemaConstraints.cs
- RTTrackingProfile.cs
- Attachment.cs
- ArrangedElementCollection.cs
- oledbmetadatacolumnnames.cs
- Listener.cs
- TreeNodeConverter.cs
- OdbcError.cs
- FileVersionInfo.cs
- InheritedPropertyChangedEventArgs.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- CriticalExceptions.cs
- DocumentXPathNavigator.cs
- AutomationElementCollection.cs
- DataControlImageButton.cs
- NumberFormatInfo.cs
- DeviceSpecificDialogCachedState.cs
- MonthCalendar.cs
- WindowsGraphics.cs
- HttpListenerResponse.cs
- SqlCommand.cs
- PartitionResolver.cs
- DataBinder.cs
- ValueChangedEventManager.cs
- CacheEntry.cs
- EditorZoneBase.cs
- ResolveCriteria.cs
- XmlEventCache.cs
- DBProviderConfigurationHandler.cs
- SchemaType.cs
- EncoderParameters.cs
- SafeRightsManagementQueryHandle.cs
- AlternateView.cs
- JulianCalendar.cs