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
- TargetConverter.cs
- StdValidatorsAndConverters.cs
- ListViewItemEventArgs.cs
- ProcessProtocolHandler.cs
- RegistryKey.cs
- FileStream.cs
- ExpressionConverter.cs
- HashMembershipCondition.cs
- TextTreePropertyUndoUnit.cs
- ExtenderProvidedPropertyAttribute.cs
- XamlSerializer.cs
- Expander.cs
- XmlTextEncoder.cs
- MessageBuffer.cs
- DropShadowBitmapEffect.cs
- BitConverter.cs
- RawStylusInputCustomData.cs
- TextDecorations.cs
- TextDataBindingHandler.cs
- OdbcConnectionFactory.cs
- clipboard.cs
- StateItem.cs
- DataListGeneralPage.cs
- ResXResourceReader.cs
- QuaternionAnimationUsingKeyFrames.cs
- WebConfigurationFileMap.cs
- XmlILModule.cs
- ApplicationSecurityInfo.cs
- PngBitmapDecoder.cs
- AuthorizationSection.cs
- ListViewPagedDataSource.cs
- TreeNodeMouseHoverEvent.cs
- RevocationPoint.cs
- ExpressionBinding.cs
- PKCS1MaskGenerationMethod.cs
- RunWorkerCompletedEventArgs.cs
- RecognizedAudio.cs
- OdbcParameter.cs
- ProfileManager.cs
- SpeechEvent.cs
- Confirm.cs
- ToolBarDesigner.cs
- _HTTPDateParse.cs
- PathFigure.cs
- DPTypeDescriptorContext.cs
- TreeNodeEventArgs.cs
- HttpListenerPrefixCollection.cs
- UserValidatedEventArgs.cs
- SelectedCellsCollection.cs
- EntityParameter.cs
- TimeSpanStorage.cs
- FlowDocument.cs
- HttpCapabilitiesBase.cs
- FontUnit.cs
- shaperfactoryquerycacheentry.cs
- TemplateColumn.cs
- SimpleNameService.cs
- Adorner.cs
- StreamWithDictionary.cs
- CodeArgumentReferenceExpression.cs
- SmiSettersStream.cs
- ComponentManagerBroker.cs
- Types.cs
- TemplateBindingExtensionConverter.cs
- EntityClassGenerator.cs
- SizeConverter.cs
- SQLGuid.cs
- WsdlBuildProvider.cs
- SwitchLevelAttribute.cs
- RequestQueue.cs
- DataGridViewElement.cs
- XmlExtensionFunction.cs
- CustomAttributeBuilder.cs
- RepeaterItem.cs
- MenuItemStyleCollection.cs
- ParameterBinding.cs
- XmlElementList.cs
- StackBuilderSink.cs
- AudienceUriMode.cs
- CollectionViewGroupInternal.cs
- ZoneButton.cs
- Propagator.ExtentPlaceholderCreator.cs
- Journal.cs
- ListenerSessionConnectionReader.cs
- ToolStripLocationCancelEventArgs.cs
- CultureTableRecord.cs
- FixedElement.cs
- DesignerVerbCollection.cs
- ComboBoxItem.cs
- FileDialogCustomPlacesCollection.cs
- ImageSourceConverter.cs
- TypeExtensions.cs
- COM2Properties.cs
- CoTaskMemSafeHandle.cs
- SafeLocalAllocation.cs
- StdValidatorsAndConverters.cs
- ChtmlMobileTextWriter.cs
- ResourceType.cs
- NameValueFileSectionHandler.cs
- DrawToolTipEventArgs.cs