Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Channels / System / ServiceModel / Channels / XmlBufferedByteStreamReader.cs / 1305376 / XmlBufferedByteStreamReader.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System;
using System.IO;
using System.Runtime;
using System.Xml;
class XmlBufferedByteStreamReader : XmlByteStreamReader
{
ByteStreamBufferedMessageData bufferedMessageData;
int offset;
static byte[] emptyByteArray = new byte[0];
public XmlBufferedByteStreamReader(ByteStreamBufferedMessageData bufferedMessageData, XmlDictionaryReaderQuotas quotas) : base (quotas)
{
Fx.Assert(bufferedMessageData != null, "bufferedMessageData is null");
this.bufferedMessageData = bufferedMessageData;
this.bufferedMessageData.Open();
this.offset = 0;
this.quotas = quotas;
this.position = ReaderPosition.None;
}
protected override void OnClose()
{
this.bufferedMessageData.Close();
this.bufferedMessageData = null;
this.offset = 0;
base.OnClose();
}
public override int ReadContentAsBase64(byte[] buffer, int index, int count)
{
EnsureInContent();
ByteStreamMessageUtility.EnsureByteBoundaries(buffer, index, count);
if (count == 0)
{
return 0;
}
int bytesToCopy = Math.Min(bufferedMessageData.Count - this.offset, count);
if (bytesToCopy == 0)
{
this.position = ReaderPosition.EndElement;
return 0;
}
Buffer.BlockCopy(this.bufferedMessageData.Buffer, this.offset, buffer, index, bytesToCopy);
this.offset += bytesToCopy;
return bytesToCopy;
}
public override bool TryGetBase64ContentLength(out int length)
{
if (!this.IsClosed)
{
// in ByteStream encoder, we're not concerned about individual xml nodes
// therefore we can just return the entire segment of the buffer we're using in this reader.
length = bufferedMessageData.Count;
return true;
}
length = -1;
return false;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EncoderBestFitFallback.cs
- RowToFieldTransformer.cs
- SqlUserDefinedAggregateAttribute.cs
- BufferModesCollection.cs
- DrawingContext.cs
- ProtocolsConfigurationHandler.cs
- RtfToXamlLexer.cs
- GACMembershipCondition.cs
- OpCodes.cs
- SqlMethodTransformer.cs
- CodePropertyReferenceExpression.cs
- DateTimeOffsetConverter.cs
- EnumMember.cs
- ConnectivityStatus.cs
- DataGridViewCellStyleConverter.cs
- RemoteCryptoDecryptRequest.cs
- BaseDataBoundControlDesigner.cs
- BitmapFrame.cs
- XPathAncestorQuery.cs
- ITextView.cs
- EncoderParameters.cs
- SaveCardRequest.cs
- RotateTransform.cs
- DiscardableAttribute.cs
- BasePattern.cs
- ListenerConstants.cs
- TextServicesCompartmentContext.cs
- AjaxFrameworkAssemblyAttribute.cs
- DataSourceControl.cs
- BaseHashHelper.cs
- ParameterCollection.cs
- BitmapCodecInfo.cs
- DeviceContext.cs
- TextDecoration.cs
- SrgsSemanticInterpretationTag.cs
- ToolBarTray.cs
- WebPartCloseVerb.cs
- ImageKeyConverter.cs
- RadioButtonBaseAdapter.cs
- RSAPKCS1SignatureDeformatter.cs
- GreenMethods.cs
- GeneralTransform2DTo3DTo2D.cs
- SetStateEventArgs.cs
- DesignerExtenders.cs
- ZoneButton.cs
- SmtpNegotiateAuthenticationModule.cs
- DataGridClipboardHelper.cs
- ProfileParameter.cs
- RemotingAttributes.cs
- InfoCardService.cs
- AdRotatorDesigner.cs
- ConfigXmlSignificantWhitespace.cs
- BindingGroup.cs
- AspCompat.cs
- ReplacementText.cs
- PathTooLongException.cs
- Matrix3DConverter.cs
- CryptoKeySecurity.cs
- BypassElement.cs
- LocatorPartList.cs
- RegexCode.cs
- ImageMetadata.cs
- OrderedDictionary.cs
- AssemblyLoader.cs
- tooltip.cs
- XmlStringTable.cs
- WhitespaceReader.cs
- ActiveXSite.cs
- WebServiceClientProxyGenerator.cs
- HTMLTextWriter.cs
- MSAANativeProvider.cs
- HeaderLabel.cs
- TcpSocketManager.cs
- WizardSideBarListControlItem.cs
- HashCodeCombiner.cs
- ServiceNameElement.cs
- SQLBytes.cs
- WebPartAddingEventArgs.cs
- ClientSponsor.cs
- BindingManagerDataErrorEventArgs.cs
- SqlDuplicator.cs
- RegistryConfigurationProvider.cs
- NativeMethods.cs
- ConnectionStringsExpressionBuilder.cs
- ProxySimple.cs
- ActivityInfo.cs
- WebBrowserNavigatedEventHandler.cs
- DataControlLinkButton.cs
- DesignerActionPanel.cs
- FileDataSourceCache.cs
- XamlTreeBuilderBamlRecordWriter.cs
- EventToken.cs
- TextModifierScope.cs
- MobilePage.cs
- COM2IProvidePropertyBuilderHandler.cs
- StateDesigner.cs
- CompilationSection.cs
- AspCompat.cs
- GridViewActionList.cs
- ColorKeyFrameCollection.cs