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
- CodeGroup.cs
- FixedTextBuilder.cs
- ParamArrayAttribute.cs
- Logging.cs
- ExternalException.cs
- SecurityState.cs
- CompareValidator.cs
- Size3DConverter.cs
- XmlSignificantWhitespace.cs
- TextSearch.cs
- ConfigurationLocation.cs
- DelegatingConfigHost.cs
- RelationalExpressions.cs
- SimpleType.cs
- Pen.cs
- HeaderedItemsControl.cs
- BindingExpressionUncommonField.cs
- ExpandCollapseProviderWrapper.cs
- wmiprovider.cs
- ECDiffieHellmanCng.cs
- PersonalizationStateInfo.cs
- URLIdentityPermission.cs
- ExpressionConverter.cs
- RankException.cs
- HostingEnvironmentSection.cs
- hresults.cs
- IisTraceWebEventProvider.cs
- TdsParserHelperClasses.cs
- CodeTypeParameter.cs
- IntSecurity.cs
- SslStreamSecurityUpgradeProvider.cs
- AnnotationService.cs
- GetRecipientRequest.cs
- Sorting.cs
- DataGridViewAutoSizeModeEventArgs.cs
- PartialTrustHelpers.cs
- DrawingCollection.cs
- SQLCharsStorage.cs
- DataColumnCollection.cs
- IncrementalCompileAnalyzer.cs
- TypeDescriptorFilterService.cs
- JournalNavigationScope.cs
- X509Certificate2.cs
- TextEffectCollection.cs
- ContentType.cs
- QilTargetType.cs
- XmlUtil.cs
- JsonGlobals.cs
- PropertyRef.cs
- LazyTextWriterCreator.cs
- TextTreeTextElementNode.cs
- AmbientLight.cs
- ActivitySurrogateSelector.cs
- OleDbDataAdapter.cs
- SrgsNameValueTag.cs
- FixedDocumentSequencePaginator.cs
- UpdateRecord.cs
- SynchronizedDispatch.cs
- LogWriteRestartAreaAsyncResult.cs
- InfoCardConstants.cs
- ListViewGroupCollectionEditor.cs
- categoryentry.cs
- SafeRegistryKey.cs
- ToolTipAutomationPeer.cs
- ImageBrush.cs
- DataGridViewComboBoxColumnDesigner.cs
- CodeCommentStatement.cs
- ItemsPresenter.cs
- EditingCoordinator.cs
- X509CertificateEndpointIdentity.cs
- XmlAttribute.cs
- KeyConverter.cs
- ApplicationSecurityInfo.cs
- TextRangeProviderWrapper.cs
- DurableEnlistmentState.cs
- HtmlMeta.cs
- StatusBarDrawItemEvent.cs
- FontSource.cs
- documentsequencetextpointer.cs
- PolicyValidationException.cs
- AuthenticateEventArgs.cs
- HtmlCalendarAdapter.cs
- SessionState.cs
- ProcessModelSection.cs
- TypeCollectionPropertyEditor.cs
- RealizationContext.cs
- ChildChangedEventArgs.cs
- WorkflowTransactionOptions.cs
- MembershipSection.cs
- Collection.cs
- Paragraph.cs
- EdmConstants.cs
- ReservationNotFoundException.cs
- ResolveNameEventArgs.cs
- HostedNamedPipeTransportManager.cs
- Content.cs
- xdrvalidator.cs
- StateDesigner.Layouts.cs
- NavigationHelper.cs
- TreeChangeInfo.cs