Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / Binding.cs / 1 / Binding.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Channels { using System; using System.ServiceModel; using System.ServiceModel.Description; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Net.Security; using System.ServiceModel.Channels; public abstract class Binding : IDefaultCommunicationTimeouts { TimeSpan closeTimeout = ServiceDefaults.CloseTimeout; string name; string namespaceIdentifier; TimeSpan openTimeout = ServiceDefaults.OpenTimeout; TimeSpan receiveTimeout = ServiceDefaults.ReceiveTimeout; TimeSpan sendTimeout = ServiceDefaults.SendTimeout; internal const string DefaultNamespace = NamingHelper.DefaultNamespace; protected Binding() { this.name = null; this.namespaceIdentifier = DefaultNamespace; } protected Binding(string name, string ns) { if (string.IsNullOrEmpty(name)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("name", SR.GetString(SR.SFXBindingNameCannotBeNullOrEmpty)); } if (ns == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("ns"); } if (ns.Length > 0) { NamingHelper.CheckUriParameter(ns, "ns"); } this.name = name; this.namespaceIdentifier = ns; } public TimeSpan CloseTimeout { get { return this.closeTimeout; } 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.closeTimeout = value; } } public string Name { get { if (this.name == null) this.name = this.GetType().Name; return this.name; } set { if (string.IsNullOrEmpty(value)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR.GetString(SR.SFXBindingNameCannotBeNullOrEmpty)); this.name = value; } } public string Namespace { get { return this.namespaceIdentifier; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } if (value.Length > 0) { NamingHelper.CheckUriProperty(value, "Namespace"); } this.namespaceIdentifier = value; } } public TimeSpan OpenTimeout { get { return this.openTimeout; } 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.openTimeout = value; } } public TimeSpan ReceiveTimeout { get { return this.receiveTimeout; } 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.receiveTimeout = value; } } public abstract string Scheme { get; } public MessageVersion MessageVersion { get { return this.GetProperty(new BindingParameterCollection()); } } public TimeSpan SendTimeout { get { return this.sendTimeout; } 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.sendTimeout = value; } } public IChannelFactory BuildChannelFactory (params object[] parameters) { return this.BuildChannelFactory (new BindingParameterCollection(parameters)); } public virtual IChannelFactory BuildChannelFactory (BindingParameterCollection parameters) { EnsureInvariants(); BindingContext context = new BindingContext(new CustomBinding(this), parameters); IChannelFactory channelFactory = context.BuildInnerChannelFactory (); context.ValidateBindingElementsConsumed(); this.ValidateSecurityCapabilities(channelFactory.GetProperty (), parameters); return channelFactory; } void ValidateSecurityCapabilities(ISecurityCapabilities runtimeSecurityCapabilities, BindingParameterCollection parameters) { ISecurityCapabilities bindingSecurityCapabilities = this.GetProperty (parameters); if (!SecurityCapabilities.IsEqual(bindingSecurityCapabilities, runtimeSecurityCapabilities)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new InvalidOperationException(SR.GetString(SR.SecurityCapabilitiesMismatched, this))); } } public virtual IChannelListener BuildChannelListener (params object[] parameters) where TChannel : class, IChannel { return this.BuildChannelListener (new BindingParameterCollection(parameters)); } public virtual IChannelListener BuildChannelListener (Uri listenUriBaseAddress, params object[] parameters) where TChannel : class, IChannel { return this.BuildChannelListener (listenUriBaseAddress, new BindingParameterCollection(parameters)); } public virtual IChannelListener BuildChannelListener (Uri listenUriBaseAddress, string listenUriRelativeAddress, params object[] parameters) where TChannel : class, IChannel { return this.BuildChannelListener (listenUriBaseAddress, listenUriRelativeAddress, new BindingParameterCollection(parameters)); } public virtual IChannelListener BuildChannelListener (Uri listenUriBaseAddress, string listenUriRelativeAddress, ListenUriMode listenUriMode, params object[] parameters) where TChannel : class, IChannel { return this.BuildChannelListener (listenUriBaseAddress, listenUriRelativeAddress, listenUriMode, new BindingParameterCollection(parameters)); } public virtual IChannelListener BuildChannelListener (BindingParameterCollection parameters) where TChannel : class, IChannel { UriBuilder listenUriBuilder = new UriBuilder(this.Scheme, DnsCache.MachineName); return this.BuildChannelListener (listenUriBuilder.Uri, String.Empty, ListenUriMode.Unique, parameters); } public virtual IChannelListener BuildChannelListener (Uri listenUriBaseAddress, BindingParameterCollection parameters) where TChannel : class, IChannel { return this.BuildChannelListener (listenUriBaseAddress, String.Empty, ListenUriMode.Explicit, parameters); } public virtual IChannelListener BuildChannelListener (Uri listenUriBaseAddress, string listenUriRelativeAddress, BindingParameterCollection parameters) where TChannel : class, IChannel { return this.BuildChannelListener (listenUriBaseAddress, listenUriRelativeAddress, ListenUriMode.Explicit, parameters); } public virtual IChannelListener BuildChannelListener (Uri listenUriBaseAddress, string listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters) where TChannel : class, IChannel { EnsureInvariants(); BindingContext context = new BindingContext(new CustomBinding(this), parameters, listenUriBaseAddress, listenUriRelativeAddress, listenUriMode); IChannelListener channelListener = context.BuildInnerChannelListener (); context.ValidateBindingElementsConsumed(); this.ValidateSecurityCapabilities(channelListener.GetProperty (), parameters); return channelListener; } public bool CanBuildChannelFactory (params object[] parameters) { return this.CanBuildChannelFactory (new BindingParameterCollection(parameters)); } public virtual bool CanBuildChannelFactory (BindingParameterCollection parameters) { BindingContext context = new BindingContext(new CustomBinding(this), parameters); return context.CanBuildInnerChannelFactory (); } public bool CanBuildChannelListener (params object[] parameters) where TChannel : class, IChannel { return this.CanBuildChannelListener (new BindingParameterCollection(parameters)); } public virtual bool CanBuildChannelListener (BindingParameterCollection parameters) where TChannel : class, IChannel { BindingContext context = new BindingContext(new CustomBinding(this), parameters); return context.CanBuildInnerChannelListener (); } // the elements should NOT reference internal elements used by the Binding public abstract BindingElementCollection CreateBindingElements(); public T GetProperty (BindingParameterCollection parameters) where T : class { BindingContext context = new BindingContext(new CustomBinding(this), parameters); return context.GetInnerProperty (); } void EnsureInvariants() { EnsureInvariants(null); } internal void EnsureInvariants(string contractName) { BindingElementCollection elements = this.CreateBindingElements(); TransportBindingElement transport = null; int index; for (index = 0; index < elements.Count; index++) { transport = elements[index] as TransportBindingElement; if (transport != null) break; } if (transport == null) { if (contractName == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.CustomBindingRequiresTransport, this.Name))); } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.SFxCustomBindingNeedsTransport1, contractName))); } } if (index != elements.Count - 1) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.TransportBindingElementMustBeLast, this.Name, transport.GetType().Name))); } if (string.IsNullOrEmpty(transport.Scheme)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.InvalidBindingScheme, transport.GetType().Name))); } if (this.MessageVersion == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.MessageVersionMissingFromBinding, this.Name))); } } internal void CopyTimeouts(IDefaultCommunicationTimeouts source) { this.CloseTimeout = source.CloseTimeout; this.OpenTimeout = source.OpenTimeout; this.ReceiveTimeout = source.ReceiveTimeout; this.SendTimeout = source.SendTimeout; } } } // 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
- TrackingCondition.cs
- GraphicsContext.cs
- XmlSchemaFacet.cs
- IPGlobalProperties.cs
- DynamicPropertyHolder.cs
- TaskScheduler.cs
- FrameworkPropertyMetadata.cs
- FormsAuthentication.cs
- NativeRightsManagementAPIsStructures.cs
- HttpValueCollection.cs
- PartialList.cs
- SqlRemoveConstantOrderBy.cs
- FlagsAttribute.cs
- EntityCollection.cs
- AnnouncementDispatcherAsyncResult.cs
- Environment.cs
- KerberosRequestorSecurityToken.cs
- DnsEndPoint.cs
- MSAAEventDispatcher.cs
- ClientCredentialsElement.cs
- AsynchronousChannel.cs
- LinqDataSourceContextEventArgs.cs
- BindingGroup.cs
- EntryPointNotFoundException.cs
- DataContractSerializerOperationGenerator.cs
- RemoteHelper.cs
- peernodestatemanager.cs
- LayoutEditorPart.cs
- LineGeometry.cs
- TabItemWrapperAutomationPeer.cs
- SqlDataSourceQueryConverter.cs
- SmiEventStream.cs
- EventProviderWriter.cs
- NamespaceEmitter.cs
- SimpleTypeResolver.cs
- DATA_BLOB.cs
- TimerTable.cs
- RawStylusInputCustomDataList.cs
- WhitespaceRuleReader.cs
- LinkLabelLinkClickedEvent.cs
- BooleanProjectedSlot.cs
- MenuItemStyleCollectionEditor.cs
- FormsAuthenticationCredentials.cs
- GeneralTransform.cs
- DataGridViewCheckBoxColumn.cs
- SpeechUI.cs
- SerializationException.cs
- XmlEnumAttribute.cs
- TextPointerBase.cs
- FixedPageStructure.cs
- SettingsPropertyValueCollection.cs
- PeerNearMe.cs
- CurrencyManager.cs
- DataGridViewColumnEventArgs.cs
- AuthenticateEventArgs.cs
- EndPoint.cs
- XmlSerializerOperationFormatter.cs
- Mouse.cs
- DesignerCategoryAttribute.cs
- PeerSecurityHelpers.cs
- DependencyObjectCodeDomSerializer.cs
- BulletedList.cs
- ArrayMergeHelper.cs
- Span.cs
- TemplatePartAttribute.cs
- SmtpFailedRecipientsException.cs
- ColorBlend.cs
- TabletDevice.cs
- UrlAuthFailedErrorFormatter.cs
- SubstitutionList.cs
- Perspective.cs
- Processor.cs
- GridViewDeletedEventArgs.cs
- CodeArrayCreateExpression.cs
- AssociationTypeEmitter.cs
- Rect3DValueSerializer.cs
- StoryFragments.cs
- LookupBindingPropertiesAttribute.cs
- TypedElement.cs
- FormatterServices.cs
- MeshGeometry3D.cs
- CodeChecksumPragma.cs
- ChangePasswordAutoFormat.cs
- RuntimeConfig.cs
- GeneratedCodeAttribute.cs
- QueuePathEditor.cs
- LinkedResource.cs
- SqlBulkCopyColumnMapping.cs
- DataSysAttribute.cs
- AsnEncodedData.cs
- CorrelationToken.cs
- Privilege.cs
- BinHexEncoder.cs
- COM2TypeInfoProcessor.cs
- IRCollection.cs
- EasingQuaternionKeyFrame.cs
- FormViewDeletedEventArgs.cs
- SynchronizationScope.cs
- EdmItemCollection.cs
- XmlUtil.cs