Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / MtomMessageEncodingBindingElement.cs / 1 / MtomMessageEncodingBindingElement.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System.Collections.Generic;
using System.ServiceModel.Description;
using System.Runtime.Serialization;
using System.ServiceModel.Channels;
using System.ServiceModel;
using System.Text;
using System.Xml;
public sealed class MtomMessageEncodingBindingElement : MessageEncodingBindingElement, IWsdlExportExtension, IPolicyExportExtension
{
int maxReadPoolSize;
int maxWritePoolSize;
XmlDictionaryReaderQuotas readerQuotas;
int maxBufferSize;
Encoding writeEncoding;
MessageVersion messageVersion;
public MtomMessageEncodingBindingElement()
: this(MessageVersion.Default, TextEncoderDefaults.Encoding)
{
}
public MtomMessageEncodingBindingElement(MessageVersion messageVersion, Encoding writeEncoding)
{
if (messageVersion == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("messageVersion");
if (messageVersion == MessageVersion.None)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.MtomEncoderBadMessageVersion, messageVersion.ToString()), "messageVersion"));
if (writeEncoding == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writeEncoding");
TextEncoderDefaults.ValidateEncoding(writeEncoding);
this.maxReadPoolSize = EncoderDefaults.MaxReadPoolSize;
this.maxWritePoolSize = EncoderDefaults.MaxWritePoolSize;
this.readerQuotas = new XmlDictionaryReaderQuotas();
EncoderDefaults.ReaderQuotas.CopyTo(this.readerQuotas);
this.maxBufferSize = MtomEncoderDefaults.MaxBufferSize;
this.messageVersion = messageVersion;
this.writeEncoding = writeEncoding;
}
MtomMessageEncodingBindingElement(MtomMessageEncodingBindingElement elementToBeCloned) : base(elementToBeCloned)
{
this.maxReadPoolSize = elementToBeCloned.maxReadPoolSize;
this.maxWritePoolSize = elementToBeCloned.maxWritePoolSize;
this.readerQuotas = new XmlDictionaryReaderQuotas();
elementToBeCloned.readerQuotas.CopyTo(this.readerQuotas);
this.maxBufferSize = elementToBeCloned.maxBufferSize;
this.writeEncoding = elementToBeCloned.writeEncoding;
this.messageVersion = elementToBeCloned.messageVersion;
}
public int MaxReadPoolSize
{
get
{
return this.maxReadPoolSize;
}
set
{
if (value <= 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
SR.GetString(SR.ValueMustBePositive)));
}
this.maxReadPoolSize = value;
}
}
public int MaxWritePoolSize
{
get
{
return this.maxWritePoolSize;
}
set
{
if (value <= 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
SR.GetString(SR.ValueMustBePositive)));
}
this.maxWritePoolSize = value;
}
}
public XmlDictionaryReaderQuotas ReaderQuotas
{
get
{
return this.readerQuotas;
}
}
public int MaxBufferSize
{
get
{
return this.maxBufferSize;
}
set
{
if (value <= 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value,
SR.GetString(SR.ValueMustBePositive)));
}
this.maxBufferSize = value;
}
}
public Encoding WriteEncoding
{
get
{
return this.writeEncoding;
}
set
{
if (value == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value");
TextEncoderDefaults.ValidateEncoding(value);
this.writeEncoding = value;
}
}
public override MessageVersion MessageVersion
{
get
{
return this.messageVersion;
}
set
{
if (value == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value");
}
if (value == MessageVersion.None)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.MtomEncoderBadMessageVersion, value.ToString()), "value"));
}
this.messageVersion = value;
}
}
public override IChannelFactory BuildChannelFactory(BindingContext context)
{
return InternalBuildChannelFactory(context);
}
public override bool CanBuildChannelFactory(BindingContext context)
{
return InternalCanBuildChannelFactory(context);
}
public override IChannelListener BuildChannelListener(BindingContext context)
{
return InternalBuildChannelListener(context);
}
public override bool CanBuildChannelListener(BindingContext context)
{
return InternalCanBuildChannelListener(context);
}
public override BindingElement Clone()
{
return new MtomMessageEncodingBindingElement(this);
}
public override MessageEncoderFactory CreateMessageEncoderFactory()
{
return new MtomMessageEncoderFactory(MessageVersion, WriteEncoding, this.MaxReadPoolSize, this.MaxWritePoolSize, this.MaxBufferSize, this.ReaderQuotas);
}
public override T GetProperty(BindingContext context)
{
if (context == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
}
if (typeof(T) == typeof(XmlDictionaryReaderQuotas))
{
return (T)(object)this.readerQuotas;
}
else
{
return base.GetProperty(context);
}
}
void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext policyContext)
{
if (policyContext == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("policyContext");
}
XmlDocument document = new XmlDocument();
policyContext.GetBindingAssertions().Add(document.CreateElement(
MessageEncodingPolicyConstants.OptimizedMimeSerializationPrefix,
MessageEncodingPolicyConstants.MtomEncodingName,
MessageEncodingPolicyConstants.OptimizedMimeSerializationNamespace));
}
void IWsdlExportExtension.ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) { }
void IWsdlExportExtension.ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context)
{
if (context == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
}
SoapHelper.SetSoapVersion(context, exporter, this.messageVersion.Envelope);
}
internal override bool CheckEncodingVersion(EnvelopeVersion version)
{
return messageVersion.Envelope == version;
}
internal override bool IsMatch(BindingElement b)
{
if (!base.IsMatch(b))
return false;
MtomMessageEncodingBindingElement mtom = b as MtomMessageEncodingBindingElement;
if (mtom == null)
return false;
if (this.maxReadPoolSize != mtom.MaxReadPoolSize)
return false;
if (this.maxWritePoolSize != mtom.MaxWritePoolSize)
return false;
// compare XmlDictionaryReaderQuotas
if (this.readerQuotas.MaxStringContentLength != mtom.ReaderQuotas.MaxStringContentLength)
return false;
if (this.readerQuotas.MaxArrayLength != mtom.ReaderQuotas.MaxArrayLength)
return false;
if (this.readerQuotas.MaxBytesPerRead != mtom.ReaderQuotas.MaxBytesPerRead)
return false;
if (this.readerQuotas.MaxDepth != mtom.ReaderQuotas.MaxDepth)
return false;
if (this.readerQuotas.MaxNameTableCharCount != mtom.ReaderQuotas.MaxNameTableCharCount)
return false;
if (this.maxBufferSize != mtom.MaxBufferSize)
return false;
if (this.WriteEncoding.EncodingName != mtom.WriteEncoding.EncodingName)
return false;
if (!this.MessageVersion.IsMatch(mtom.MessageVersion))
return false;
return true;
}
}
}
// 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
- counter.cs
- Cloud.cs
- BuildResultCache.cs
- OrthographicCamera.cs
- FileCodeGroup.cs
- DescendantBaseQuery.cs
- XPathBuilder.cs
- ZipIOCentralDirectoryFileHeader.cs
- HttpContextServiceHost.cs
- OdbcDataAdapter.cs
- TraceSection.cs
- StylusPlugin.cs
- AnnotationComponentManager.cs
- RegistrySecurity.cs
- SrgsOneOf.cs
- DesignerSelectionListAdapter.cs
- OdbcConnectionStringbuilder.cs
- Material.cs
- PeerEndPoint.cs
- GridViewAutoFormat.cs
- FixedNode.cs
- SqlPersistenceProviderFactory.cs
- ColorAnimation.cs
- SqlDataSourceEnumerator.cs
- TraceEventCache.cs
- CompressStream.cs
- SignedPkcs7.cs
- MappedMetaModel.cs
- WebPartCloseVerb.cs
- CompiledXpathExpr.cs
- EntityProviderFactory.cs
- Pair.cs
- WebPartVerb.cs
- CodeFieldReferenceExpression.cs
- CancellationTokenSource.cs
- EventPropertyMap.cs
- CodeSpit.cs
- SetStoryboardSpeedRatio.cs
- GridViewColumnCollection.cs
- ApplicationSecurityManager.cs
- SqlProviderManifest.cs
- MeasurementDCInfo.cs
- SimpleFieldTemplateFactory.cs
- LabelTarget.cs
- ReachDocumentReferenceCollectionSerializer.cs
- AccessText.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- HashHelper.cs
- CodeStatementCollection.cs
- InternalPolicyElement.cs
- shaperfactoryquerycacheentry.cs
- DbProviderManifest.cs
- ExceptionRoutedEventArgs.cs
- ServiceModelEnumValidator.cs
- TimeoutValidationAttribute.cs
- GeneratedCodeAttribute.cs
- ListComponentEditor.cs
- InvalidWorkflowException.cs
- DNS.cs
- TextCompositionManager.cs
- InkCanvasFeedbackAdorner.cs
- InvalidCommandTreeException.cs
- ExpressionConverter.cs
- TriggerAction.cs
- BooleanAnimationUsingKeyFrames.cs
- SafeFindHandle.cs
- ColorKeyFrameCollection.cs
- RegionIterator.cs
- FormatPage.cs
- GridViewCommandEventArgs.cs
- CompiledIdentityConstraint.cs
- QuaternionAnimationBase.cs
- Win32Native.cs
- ThreadAbortException.cs
- QilInvoke.cs
- RowBinding.cs
- UTF7Encoding.cs
- ProjectedSlot.cs
- EntityModelBuildProvider.cs
- TypeListConverter.cs
- WebRequestModuleElementCollection.cs
- SystemWebCachingSectionGroup.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DataControlPagerLinkButton.cs
- Module.cs
- SyndicationElementExtensionCollection.cs
- WebPartCatalogAddVerb.cs
- XmlAttributeOverrides.cs
- MediaContext.cs
- BrowserTree.cs
- MulticastNotSupportedException.cs
- FixedSOMPage.cs
- EntityCommandDefinition.cs
- GridLength.cs
- ActiveXHost.cs
- DateTimeConverter2.cs
- BufferedGraphics.cs
- Hash.cs
- GradientStopCollection.cs
- HttpListenerResponse.cs