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
- ColorIndependentAnimationStorage.cs
- UInt16Storage.cs
- BrushMappingModeValidation.cs
- Translator.cs
- DBParameter.cs
- SimpleParser.cs
- TagMapInfo.cs
- OLEDB_Util.cs
- XmlSchemaSimpleTypeUnion.cs
- InkCanvasFeedbackAdorner.cs
- ClickablePoint.cs
- SafeNativeMethodsMilCoreApi.cs
- StylusEventArgs.cs
- SHA1Managed.cs
- DetailsViewDeleteEventArgs.cs
- MutexSecurity.cs
- AttachedProperty.cs
- ForEachAction.cs
- RangeValidator.cs
- PrimitiveSchema.cs
- SchemaNamespaceManager.cs
- IntPtr.cs
- KeyGestureValueSerializer.cs
- WebPartManagerInternals.cs
- MouseGestureValueSerializer.cs
- XhtmlBasicListAdapter.cs
- TargetPerspective.cs
- GridPatternIdentifiers.cs
- IDictionary.cs
- DesigntimeLicenseContext.cs
- CodeGeneratorOptions.cs
- XmlSchemaChoice.cs
- CodeObjectCreateExpression.cs
- RandomNumberGenerator.cs
- DataStorage.cs
- DataBoundControlAdapter.cs
- SystemIcmpV6Statistics.cs
- HealthMonitoringSection.cs
- ScriptingScriptResourceHandlerSection.cs
- HtmlInputFile.cs
- StringBuilder.cs
- MimeWriter.cs
- pingexception.cs
- TaiwanLunisolarCalendar.cs
- DoubleAnimation.cs
- EventProviderBase.cs
- ConfigViewGenerator.cs
- XamlSerializerUtil.cs
- AliasExpr.cs
- TreeNodeStyleCollectionEditor.cs
- TableLayoutPanel.cs
- TextSegment.cs
- TemplateBindingExpression.cs
- SemanticResultValue.cs
- StreamInfo.cs
- TrackingProfile.cs
- LassoSelectionBehavior.cs
- RtfToXamlReader.cs
- Renderer.cs
- XmlDeclaration.cs
- Selection.cs
- HandlerFactoryWrapper.cs
- QuarticEase.cs
- BinarySecretSecurityToken.cs
- CreateParams.cs
- SortedDictionary.cs
- XmlDictionaryReaderQuotas.cs
- IPAddress.cs
- SystemIPv4InterfaceProperties.cs
- AtomPub10ServiceDocumentFormatter.cs
- CompilationUnit.cs
- AlternateViewCollection.cs
- TransformGroup.cs
- XmlDataSourceNodeDescriptor.cs
- QuotedStringWriteStateInfo.cs
- BinarySerializer.cs
- ProvidersHelper.cs
- UdpDiscoveryEndpointElement.cs
- WizardForm.cs
- DesignTimeHTMLTextWriter.cs
- PathSegmentCollection.cs
- DBParameter.cs
- ISAPIRuntime.cs
- NonVisualControlAttribute.cs
- odbcmetadatafactory.cs
- ContainerUtilities.cs
- XLinq.cs
- CachingHintValidation.cs
- FixedSOMElement.cs
- SerializationHelper.cs
- ObjectQueryExecutionPlan.cs
- MediaScriptCommandRoutedEventArgs.cs
- ISAPIApplicationHost.cs
- InternalTypeHelper.cs
- TextServicesHost.cs
- XmlKeywords.cs
- InvalidDataException.cs
- PublisherMembershipCondition.cs
- UpdateTranslator.cs
- DataGridViewMethods.cs