Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / ConnectionOrientedTransportBindingElement.cs / 1 / ConnectionOrientedTransportBindingElement.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; using System.ServiceModel.Description; using System.Net.Security; using System.Runtime.Serialization; using System.ServiceModel; using System.Security.Principal; using System.ServiceModel.Security; using System.Xml; public abstract class ConnectionOrientedTransportBindingElement : TransportBindingElement, IWsdlExportExtension, IPolicyExportExtension, ITransportPolicyImport { int connectionBufferSize; bool exposeConnectionProperty; HostNameComparisonMode hostNameComparisonMode; bool inheritBaseAddressSettings; TimeSpan channelInitializationTimeout; int maxBufferSize; bool maxBufferSizeInitialized; int maxPendingConnections; TimeSpan maxOutputDelay; int maxPendingAccepts; TransferMode transferMode; internal ConnectionOrientedTransportBindingElement() : base() { this.connectionBufferSize = ConnectionOrientedTransportDefaults.ConnectionBufferSize; this.hostNameComparisonMode = ConnectionOrientedTransportDefaults.HostNameComparisonMode; this.channelInitializationTimeout = ConnectionOrientedTransportDefaults.ChannelInitializationTimeout; this.maxBufferSize = TransportDefaults.MaxBufferSize; this.maxPendingConnections = ConnectionOrientedTransportDefaults.MaxPendingConnections; this.maxOutputDelay = ConnectionOrientedTransportDefaults.MaxOutputDelay; this.maxPendingAccepts = ConnectionOrientedTransportDefaults.MaxPendingAccepts; this.transferMode = ConnectionOrientedTransportDefaults.TransferMode; } internal ConnectionOrientedTransportBindingElement(ConnectionOrientedTransportBindingElement elementToBeCloned) : base(elementToBeCloned) { this.connectionBufferSize = elementToBeCloned.connectionBufferSize; this.exposeConnectionProperty = elementToBeCloned.exposeConnectionProperty; this.hostNameComparisonMode = elementToBeCloned.hostNameComparisonMode; this.inheritBaseAddressSettings = elementToBeCloned.InheritBaseAddressSettings; this.channelInitializationTimeout = elementToBeCloned.ChannelInitializationTimeout; this.maxBufferSize = elementToBeCloned.maxBufferSize; this.maxBufferSizeInitialized = elementToBeCloned.maxBufferSizeInitialized; this.maxPendingConnections = elementToBeCloned.maxPendingConnections; this.maxOutputDelay = elementToBeCloned.maxOutputDelay; this.maxPendingAccepts = elementToBeCloned.maxPendingAccepts; this.transferMode = elementToBeCloned.transferMode; } // client // server public int ConnectionBufferSize { get { return this.connectionBufferSize; } set { if (value < 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.ValueMustBeNonNegative))); } this.connectionBufferSize = value; } } // client internal bool ExposeConnectionProperty { get { return this.exposeConnectionProperty; } set { this.exposeConnectionProperty = value; } } public HostNameComparisonMode HostNameComparisonMode { get { return this.hostNameComparisonMode; } set { HostNameComparisonModeHelper.Validate(value); this.hostNameComparisonMode = value; } } // server public int MaxBufferSize { get { if (maxBufferSizeInitialized || TransferMode != TransferMode.Buffered) { return maxBufferSize; } long maxReceivedMessageSize = MaxReceivedMessageSize; if (maxReceivedMessageSize > int.MaxValue) { return int.MaxValue; } else { return (int)maxReceivedMessageSize; } } set { if (value <= 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.ValueMustBePositive))); } maxBufferSizeInitialized = true; this.maxBufferSize = value; } } // server public int MaxPendingConnections { get { return this.maxPendingConnections; } set { if (value <= 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.ValueMustBePositive))); this.maxPendingConnections = value; } } // MB#26970: used by MEX to ensure that we don't conflict on base-address scoped settings internal bool InheritBaseAddressSettings { get { return this.inheritBaseAddressSettings; } set { this.inheritBaseAddressSettings = value; } } // server public TimeSpan ChannelInitializationTimeout { get { return this.channelInitializationTimeout; } set { if (value <= TimeSpan.Zero) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.TimeSpanMustbeGreaterThanTimeSpanZero))); } if (TimeoutHelper.IsTooLarge(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.SFxTimeoutOutOfRangeTooBig))); } this.channelInitializationTimeout = value; } } // server public TimeSpan MaxOutputDelay { get { return this.maxOutputDelay; } set { if (value < TimeSpan.Zero) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.SFxTimeoutOutOfRange0))); } if (TimeoutHelper.IsTooLarge(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.SFxTimeoutOutOfRangeTooBig))); } this.maxOutputDelay = value; } } // server public int MaxPendingAccepts { get { return this.maxPendingAccepts; } set { if (value <= 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR.GetString(SR.ValueMustBePositive))); } this.maxPendingAccepts = value; } } // client // server public TransferMode TransferMode { get { return this.transferMode; } set { TransferModeHelper.Validate(value); this.transferMode = value; } } public override bool CanBuildChannelFactory(BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (TransferMode == TransferMode.Buffered) { return (typeof(TChannel) == typeof(IDuplexSessionChannel)); } else { return (typeof(TChannel) == typeof(IRequestChannel)); } } public override bool CanBuildChannelListener (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (TransferMode == TransferMode.Buffered) { return (typeof(TChannel) == typeof(IDuplexSessionChannel)); } else { return (typeof(TChannel) == typeof(IReplyChannel)); } } void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context) { if (exporter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("exporter"); } if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } ICollection policyAssertions = context.GetBindingAssertions(); if (TransferModeHelper.IsRequestStreamed(this.TransferMode) || TransferModeHelper.IsResponseStreamed(this.TransferMode)) { policyAssertions.Add(new XmlDocument().CreateElement(TransportPolicyConstants.DotNetFramingPrefix, TransportPolicyConstants.StreamedName, TransportPolicyConstants.DotNetFramingNamespace)); } bool createdNew; MessageEncodingBindingElement encodingBindingElement = FindMessageEncodingBindingElement(context.BindingElements, out createdNew); if (createdNew && encodingBindingElement is IPolicyExportExtension) { encodingBindingElement = new BinaryMessageEncodingBindingElement(); ((IPolicyExportExtension)encodingBindingElement).ExportPolicy(exporter, context); } WsdlExporter.WSAddressingHelper.AddWSAddressingAssertion(exporter, context, encodingBindingElement.MessageVersion.Addressing); } void IWsdlExportExtension.ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) { } internal abstract string WsdlTransportUri { get; } void IWsdlExportExtension.ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext endpointContext) { bool createdNew; MessageEncodingBindingElement encodingBindingElement = FindMessageEncodingBindingElement(endpointContext, out createdNew); TransportBindingElement.ExportWsdlEndpoint(exporter, endpointContext, this.WsdlTransportUri, encodingBindingElement.MessageVersion.Addressing); } void ITransportPolicyImport.ImportPolicy(MetadataImporter importer, PolicyConversionContext policyContext) { if (PolicyConversionContext.FindAssertion(policyContext.GetBindingAssertions(), TransportPolicyConstants.StreamedName, TransportPolicyConstants.DotNetFramingNamespace, true) != null) { this.TransferMode = TransferMode.Streamed; } WindowsStreamSecurityBindingElement.ImportPolicy(importer, policyContext); SslStreamSecurityBindingElement.ImportPolicy(importer, policyContext); } public override T GetProperty (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (typeof(T) == typeof(TransferMode)) { return (T)(object)this.TransferMode; } else { return base.GetProperty (context); } } internal override bool IsMatch(BindingElement b) { if (!base.IsMatch(b)) return false; ConnectionOrientedTransportBindingElement connection = b as ConnectionOrientedTransportBindingElement; if (connection == null) return false; if (this.connectionBufferSize != connection.connectionBufferSize) return false; if (this.hostNameComparisonMode != connection.hostNameComparisonMode) return false; if (this.inheritBaseAddressSettings != connection.inheritBaseAddressSettings) return false; if (this.channelInitializationTimeout != connection.channelInitializationTimeout) { return false; } if (this.maxBufferSize != connection.maxBufferSize) return false; if (this.maxPendingConnections != connection.maxPendingConnections) return false; if (this.maxOutputDelay != connection.maxOutputDelay) return false; if (this.maxPendingAccepts != connection.maxPendingAccepts) return false; if (this.transferMode != connection.transferMode) return false; return true; } MessageEncodingBindingElement FindMessageEncodingBindingElement(BindingElementCollection bindingElements, out bool createdNew) { createdNew = false; MessageEncodingBindingElement encodingBindingElement = bindingElements.Find (); if (encodingBindingElement == null) { createdNew = true; encodingBindingElement = new BinaryMessageEncodingBindingElement(); } return encodingBindingElement; } MessageEncodingBindingElement FindMessageEncodingBindingElement(WsdlEndpointConversionContext endpointContext, out bool createdNew) { BindingElementCollection bindingElements = endpointContext.Endpoint.Binding.CreateBindingElements(); return FindMessageEncodingBindingElement(bindingElements, out createdNew); } } } // 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
- HiddenField.cs
- ByteStorage.cs
- TextPointerBase.cs
- ConfigXmlComment.cs
- UncommonField.cs
- EmissiveMaterial.cs
- UnsafeNativeMethodsCLR.cs
- DataGridDesigner.cs
- WebPartConnectionsConnectVerb.cs
- TraceHelpers.cs
- Misc.cs
- Token.cs
- CompiledXpathExpr.cs
- Classification.cs
- CompilerScopeManager.cs
- RichTextBox.cs
- QilXmlReader.cs
- DataRowView.cs
- ViewKeyConstraint.cs
- Encoder.cs
- XMLUtil.cs
- FormViewDeletedEventArgs.cs
- BinaryObjectWriter.cs
- FlowNode.cs
- UpdateCommand.cs
- EventDescriptor.cs
- InsufficientMemoryException.cs
- Clock.cs
- ExpressionBinding.cs
- XPathNavigator.cs
- TimeSpanConverter.cs
- cookieexception.cs
- TableColumn.cs
- DataExpression.cs
- _FtpDataStream.cs
- MaskedTextBox.cs
- DeferredTextReference.cs
- WsiProfilesElementCollection.cs
- SectionXmlInfo.cs
- Debugger.cs
- PhysicalAddress.cs
- milexports.cs
- ListBoxChrome.cs
- UrlPath.cs
- ChannelCacheDefaults.cs
- SecurityKeyEntropyMode.cs
- XPathNodeHelper.cs
- ISO2022Encoding.cs
- TaskFactory.cs
- DecoderBestFitFallback.cs
- KeyEvent.cs
- FixedSOMPage.cs
- _DisconnectOverlappedAsyncResult.cs
- ResXResourceWriter.cs
- CatalogPart.cs
- ButtonBase.cs
- Icon.cs
- PageRequestManager.cs
- StringBuilder.cs
- SqlInfoMessageEvent.cs
- HScrollBar.cs
- ReceiveErrorHandling.cs
- ListItemCollection.cs
- ValueSerializerAttribute.cs
- XmlAttribute.cs
- XmlEncoding.cs
- BamlLocalizer.cs
- SolidColorBrush.cs
- SiteMapProvider.cs
- ObjectConverter.cs
- FileInfo.cs
- UpDownEvent.cs
- HttpBufferlessInputStream.cs
- ModelItemDictionaryImpl.cs
- EntityClientCacheKey.cs
- MultiViewDesigner.cs
- ListViewAutomationPeer.cs
- SR.cs
- ConsumerConnectionPoint.cs
- TextTabProperties.cs
- SBCSCodePageEncoding.cs
- Renderer.cs
- SqlConnectionString.cs
- PageContentCollection.cs
- SqlMethods.cs
- IssuedSecurityTokenParameters.cs
- Process.cs
- DoubleUtil.cs
- QuaternionKeyFrameCollection.cs
- Unit.cs
- DataFormats.cs
- PropertyValueChangedEvent.cs
- WebBrowserNavigatingEventHandler.cs
- MimeMapping.cs
- EditorPartCollection.cs
- AdjustableArrowCap.cs
- AmbientLight.cs
- WebPartExportVerb.cs
- Crypto.cs
- TileBrush.cs