Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / ChannelBuilder.cs / 1 / ChannelBuilder.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; using System.ServiceModel.Dispatcher; class ChannelBuilder { CustomBinding binding; BindingContext context; BindingParameterCollection bindingParameters; Uri listenUri; public ChannelBuilder(BindingContext context, bool addChannelDemuxerIfRequired) { this.context = context; if (addChannelDemuxerIfRequired) { this.AddDemuxerBindingElement(context.RemainingBindingElements); } this.binding = new CustomBinding(context.Binding, context.RemainingBindingElements); this.bindingParameters = context.BindingParameters; } public ChannelBuilder(Binding binding, BindingParameterCollection bindingParameters, bool addChannelDemuxerIfRequired) { this.binding = new CustomBinding(binding); this.bindingParameters = bindingParameters; if (addChannelDemuxerIfRequired) { this.AddDemuxerBindingElement(this.binding.Elements); } } public ChannelBuilder(ChannelBuilder channelBuilder) { this.binding = new CustomBinding(channelBuilder.Binding); this.bindingParameters = channelBuilder.BindingParameters; if (this.binding.Elements.Find() == null) { DiagnosticUtility.DebugAssert("ChannelBuilder.ctor (this.binding.Elements.Find () != null)"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } } public CustomBinding Binding { get { return this.binding; } set { this.binding = value; } } public BindingParameterCollection BindingParameters { get { return this.bindingParameters; } set { this.bindingParameters = value; } } void AddDemuxerBindingElement(BindingElementCollection elements) { if (elements.Find () == null) { // add the channel demuxer binding element right above the transport TransportBindingElement transport = elements.Find (); if (transport == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.TransportBindingElementNotFound))); } // cache the context state in the demuxer so that the same context state can be provided to the transport // when building auxilliary channels and listeners (for ex, for security negotiation) elements.Insert(elements.IndexOf(transport), new ChannelDemuxerBindingElement(true)); } } public IChannelFactory BuildChannelFactory () { if (this.context != null) { IChannelFactory factory = this.context.BuildInnerChannelFactory (); this.context = null; return factory; } else { return this.binding.BuildChannelFactory (this.bindingParameters); } } public IChannelListener BuildChannelListener () where TChannel : class, IChannel { if (this.context != null) { IChannelListener listener = this.context.BuildInnerChannelListener (); this.listenUri = listener.Uri; this.context = null; return listener; } else { return this.binding.BuildChannelListener (this.listenUri, this.bindingParameters); } } public IChannelListener BuildChannelListener (MessageFilter filter, int priority) where TChannel : class, IChannel { this.bindingParameters.Add(new ChannelDemuxerFilter(filter, priority)); IChannelListener listener = this.BuildChannelListener (); this.bindingParameters.Remove (); return listener; } public bool CanBuildChannelFactory () { return this.binding.CanBuildChannelFactory (this.bindingParameters); } public bool CanBuildChannelListener () where TChannel : class, IChannel { return this.binding.CanBuildChannelListener (this.bindingParameters); } } } // 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
- ApplicationCommands.cs
- DocumentPageView.cs
- RayMeshGeometry3DHitTestResult.cs
- InfiniteTimeSpanConverter.cs
- baseaxisquery.cs
- FillBehavior.cs
- IntSecurity.cs
- entitydatasourceentitysetnameconverter.cs
- AccessDataSource.cs
- MappingMetadataHelper.cs
- _BaseOverlappedAsyncResult.cs
- ParagraphResult.cs
- EnvironmentPermission.cs
- SmtpReplyReaderFactory.cs
- CounterSample.cs
- SQLBinaryStorage.cs
- SecurityException.cs
- GeneralTransform.cs
- TraceUtility.cs
- Mouse.cs
- SchemaElementDecl.cs
- ObjectQuery_EntitySqlExtensions.cs
- SerializationException.cs
- Int32Animation.cs
- CodeVariableDeclarationStatement.cs
- _BasicClient.cs
- TextParagraphView.cs
- BitmapMetadataBlob.cs
- TextBoxLine.cs
- Canvas.cs
- CacheChildrenQuery.cs
- QuotedStringFormatReader.cs
- StorageEntityContainerMapping.cs
- ControlBuilder.cs
- CharAnimationBase.cs
- NullableLongSumAggregationOperator.cs
- CookieProtection.cs
- CollaborationHelperFunctions.cs
- FormViewCommandEventArgs.cs
- Vector3dCollection.cs
- FileDialog_Vista_Interop.cs
- BrowserInteropHelper.cs
- EventSourceCreationData.cs
- WsatConfiguration.cs
- Root.cs
- ScriptingScriptResourceHandlerSection.cs
- RangeContentEnumerator.cs
- WindowsGraphics.cs
- ComponentDispatcher.cs
- HttpPostProtocolReflector.cs
- UrlMappingsSection.cs
- GorillaCodec.cs
- OneOfScalarConst.cs
- _NestedMultipleAsyncResult.cs
- LoginCancelEventArgs.cs
- DefaultProxySection.cs
- ElementMarkupObject.cs
- XmlMembersMapping.cs
- CodeDelegateInvokeExpression.cs
- PictureBox.cs
- HttpPostedFile.cs
- ArgumentsParser.cs
- DataServiceHost.cs
- Context.cs
- HeaderFilter.cs
- DifferencingCollection.cs
- mediaeventshelper.cs
- PowerModeChangedEventArgs.cs
- ClientData.cs
- RequestCacheEntry.cs
- DiscoveryClientRequestChannel.cs
- ToolBarOverflowPanel.cs
- KeyGestureConverter.cs
- TriggerActionCollection.cs
- HostedHttpRequestAsyncResult.cs
- RuntimeResourceSet.cs
- LinqToSqlWrapper.cs
- ZipIOLocalFileBlock.cs
- SessionStateUtil.cs
- DataKey.cs
- Substitution.cs
- DescendantOverDescendantQuery.cs
- COAUTHIDENTITY.cs
- CombinedTcpChannel.cs
- EmptyStringExpandableObjectConverter.cs
- OracleBoolean.cs
- Model3DGroup.cs
- SqlDataSourceFilteringEventArgs.cs
- AnonymousIdentificationSection.cs
- FlowDocumentScrollViewer.cs
- DesignerTransactionCloseEvent.cs
- PeerNameRecordCollection.cs
- SQLMembershipProvider.cs
- SamlNameIdentifierClaimResource.cs
- GridViewCommandEventArgs.cs
- GeneralTransform2DTo3DTo2D.cs
- BasicCellRelation.cs
- CodeAttachEventStatement.cs
- DispatchOperation.cs
- SystemIPv6InterfaceProperties.cs