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
- InternalConfigSettingsFactory.cs
- Pointer.cs
- XamlFilter.cs
- OleDbRowUpdatingEvent.cs
- ListViewCommandEventArgs.cs
- AutomationPattern.cs
- ConstructorBuilder.cs
- MessageSecurityTokenVersion.cs
- DesignBindingEditor.cs
- BoolExpressionVisitors.cs
- SqlDataSourceFilteringEventArgs.cs
- Transform3D.cs
- ProxyGenerationError.cs
- XslVisitor.cs
- DetailsViewPagerRow.cs
- ViewEvent.cs
- DesignerSerializationManager.cs
- CodeMemberEvent.cs
- DocumentViewerConstants.cs
- Signature.cs
- oledbmetadatacollectionnames.cs
- Screen.cs
- RectAnimationUsingKeyFrames.cs
- DispatcherHookEventArgs.cs
- HttpProfileBase.cs
- Parallel.cs
- Permission.cs
- XmlSortKeyAccumulator.cs
- Pair.cs
- WeakReadOnlyCollection.cs
- ExceptionHelpers.cs
- CustomCredentialPolicy.cs
- SqlTriggerAttribute.cs
- DataGridViewRowCollection.cs
- DropTarget.cs
- DataGridViewAutoSizeModeEventArgs.cs
- HyperLinkField.cs
- EntityDataSourceValidationException.cs
- BinaryReader.cs
- EntityDataSourceDesignerHelper.cs
- ProgressiveCrcCalculatingStream.cs
- CookieParameter.cs
- DrawingVisual.cs
- DefaultValidator.cs
- SafeEventLogReadHandle.cs
- CompilerGlobalScopeAttribute.cs
- TypefaceMap.cs
- sqlmetadatafactory.cs
- DataGridViewComboBoxCell.cs
- ListCollectionView.cs
- ReadOnlyCollectionBase.cs
- AccessorTable.cs
- CodeSubDirectoriesCollection.cs
- TextParaClient.cs
- OdbcConnectionString.cs
- altserialization.cs
- ScopelessEnumAttribute.cs
- Authorization.cs
- XsdBuilder.cs
- ObjectItemAssemblyLoader.cs
- XmlAttribute.cs
- DoubleMinMaxAggregationOperator.cs
- EntityContainerEmitter.cs
- DataSet.cs
- ConstraintStruct.cs
- ElementNotEnabledException.cs
- TrackingProfileManager.cs
- LambdaCompiler.Expressions.cs
- IPeerNeighbor.cs
- LayoutUtils.cs
- Verify.cs
- ChildChangedEventArgs.cs
- SimpleWorkerRequest.cs
- RenderContext.cs
- Expander.cs
- CookielessHelper.cs
- RunWorkerCompletedEventArgs.cs
- ProcessThreadCollection.cs
- Optimizer.cs
- EntityAdapter.cs
- SimpleType.cs
- PreloadedPackages.cs
- MetadataItemEmitter.cs
- TemplateXamlParser.cs
- TimeZone.cs
- NegotiateStream.cs
- WebControlParameterProxy.cs
- StylusPointProperty.cs
- DataGridView.cs
- HttpPostClientProtocol.cs
- InstanceStore.cs
- DebugTrace.cs
- PngBitmapEncoder.cs
- pingexception.cs
- LongMinMaxAggregationOperator.cs
- SoapReflectionImporter.cs
- TextTabProperties.cs
- ExpressionDumper.cs
- WebBrowserProgressChangedEventHandler.cs
- SafeFileMappingHandle.cs