Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / HttpStreamMessageEncoderFactory.cs / 1 / HttpStreamMessageEncoderFactory.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Net;
using System.Xml;
using System.Text;
using System.ServiceModel.Dispatcher;
class HttpStreamMessageEncoderFactory : MessageEncoderFactory
{
HttpStreamMessageEncoder encoder;
public HttpStreamMessageEncoderFactory(XmlDictionaryReaderQuotas quotas)
{
this.encoder = new HttpStreamMessageEncoder(quotas);
}
public override MessageEncoder Encoder
{
get { return this.encoder; }
}
public override MessageVersion MessageVersion
{
get { return MessageVersion.None; }
}
public override MessageEncoder CreateSessionEncoder()
{
return this.encoder;
}
internal class HttpStreamMessageEncoder : MessageEncoder
{
string maxReceivedMessageSizeExceededResourceString;
string maxSentMessageSizeExceededResourceString;
XmlDictionaryReaderQuotas quotas;
public HttpStreamMessageEncoder(XmlDictionaryReaderQuotas quotas)
{
this.quotas = quotas;
this.maxSentMessageSizeExceededResourceString = SR2.MaxSentMessageSizeExceeded;
this.maxReceivedMessageSizeExceededResourceString = SR2.MaxReceivedMessageSizeExceeded;
}
public override string ContentType
{
get { return null; }
}
public override string MediaType
{
get { return null; }
}
public override MessageVersion MessageVersion
{
get { return MessageVersion.None; }
}
public override bool IsContentTypeSupported(string contentType)
{
return true;
}
public override Message ReadMessage(ArraySegment buffer, BufferManager bufferManager, string contentType)
{
if (bufferManager == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bufferManager");
}
Message result;
using (BufferedOutputStream stream = new BufferedOutputStream(maxReceivedMessageSizeExceededResourceString, 0, int.MaxValue, bufferManager))
{
stream.Write(buffer.Array, 0, buffer.Count);
result = ReadMessage(stream.ToMemoryStream(), int.MaxValue, contentType);
bufferManager.ReturnBuffer(buffer.Array);
return result;
}
}
public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType)
{
if (stream == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream");
}
Message result = Message.CreateMessage(new HttpStreamXmlDictionaryReader(stream, this.quotas), maxSizeOfHeaders, MessageVersion.None);
result.Properties.Encoder = this;
return result;
}
public override void WriteMessage(Message message, Stream stream)
{
if (message == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message");
}
if (stream == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream");
}
message.Properties.Encoder = this;
using (HttpStreamXmlDictionaryWriter writer = new HttpStreamXmlDictionaryWriter(stream))
{
message.WriteMessage(writer);
writer.Flush();
}
}
public override ArraySegment WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
if (message == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message");
}
if (bufferManager == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bufferManager");
}
if (maxMessageSize < 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("maxMessageSize"));
}
using (BufferedOutputStream stream = new BufferedOutputStream(this.maxSentMessageSizeExceededResourceString, 0, maxMessageSize, bufferManager))
{
stream.Skip(messageOffset);
WriteMessage(message, stream);
int size;
byte[] buffer = stream.ToArray(out size);
return new ArraySegment(buffer, 0, size - messageOffset);
}
}
}
}
}
// 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
- EdmError.cs
- EntitySqlQueryState.cs
- SystemIPAddressInformation.cs
- ToolStripLabel.cs
- XmlNodeReader.cs
- ThreadStaticAttribute.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- EventTrigger.cs
- HandleCollector.cs
- Variable.cs
- ScalarOps.cs
- DateTime.cs
- DivideByZeroException.cs
- TreeNodeClickEventArgs.cs
- MachineKeySection.cs
- XmlSchemaObjectTable.cs
- NativeMethods.cs
- CodeTypeDelegate.cs
- TypeHelper.cs
- ButtonColumn.cs
- DateTimeConverter2.cs
- DataSet.cs
- LocatorBase.cs
- DefaultValueAttribute.cs
- DisplayMemberTemplateSelector.cs
- HttpProfileGroupBase.cs
- DoubleLinkList.cs
- StyleReferenceConverter.cs
- DisplayMemberTemplateSelector.cs
- RsaSecurityToken.cs
- CommandArguments.cs
- SafeFileMapViewHandle.cs
- UnknownWrapper.cs
- XmlHierarchicalDataSourceView.cs
- NavigatingCancelEventArgs.cs
- NeutralResourcesLanguageAttribute.cs
- DocumentCollection.cs
- Identifier.cs
- XmlRawWriter.cs
- CustomExpressionEventArgs.cs
- CqlBlock.cs
- RenamedEventArgs.cs
- RtfToXamlLexer.cs
- CultureTable.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- CellTreeNode.cs
- WorkflowOperationFault.cs
- HtmlElementCollection.cs
- CqlGenerator.cs
- DateBoldEvent.cs
- BlobPersonalizationState.cs
- Rotation3DAnimationBase.cs
- TdsRecordBufferSetter.cs
- Quaternion.cs
- DataStorage.cs
- ProcessHostFactoryHelper.cs
- HtmlMeta.cs
- StylusPointCollection.cs
- PagesSection.cs
- ObjectAnimationBase.cs
- WebResponse.cs
- TransformerInfo.cs
- DataMisalignedException.cs
- _AuthenticationState.cs
- CodeTypeReferenceCollection.cs
- ExpressionEditorAttribute.cs
- Attributes.cs
- AttributeData.cs
- DCSafeHandle.cs
- LinqDataSourceDisposeEventArgs.cs
- DtrList.cs
- KnownTypes.cs
- DataGridParentRows.cs
- RankException.cs
- ToolStripArrowRenderEventArgs.cs
- BindingMemberInfo.cs
- DesignerLoader.cs
- WebPartConnectionsEventArgs.cs
- StreamGeometryContext.cs
- ModelService.cs
- CategoryNameCollection.cs
- Int64Animation.cs
- SecurityChannelFaultConverter.cs
- FormatterServices.cs
- WebBrowser.cs
- TemplateControlBuildProvider.cs
- WebBrowser.cs
- BinaryFormatterWriter.cs
- ThreadStartException.cs
- HashMembershipCondition.cs
- ListBox.cs
- ToolStripItemClickedEventArgs.cs
- util.cs
- HttpInputStream.cs
- LoadWorkflowByKeyAsyncResult.cs
- Validator.cs
- MsdtcClusterUtils.cs
- BitmapDownload.cs
- HttpModuleAction.cs
- DbConnectionOptions.cs