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
- DesignTable.cs
- DeobfuscatingStream.cs
- SamlAuthorizationDecisionStatement.cs
- Hex.cs
- TextServicesCompartmentContext.cs
- DataReaderContainer.cs
- ArithmeticException.cs
- InputLanguage.cs
- CodeDelegateCreateExpression.cs
- FigureParagraph.cs
- ResourceProviderFactory.cs
- PlanCompilerUtil.cs
- DeviceContext.cs
- TextWriterEngine.cs
- WindowsFormsLinkLabel.cs
- bidPrivateBase.cs
- MachineKeyConverter.cs
- TransformBlockRequest.cs
- HandlerBase.cs
- FrugalList.cs
- XmlCharCheckingReader.cs
- OutputCacheSettings.cs
- LineSegment.cs
- ContextDataSource.cs
- MediaContextNotificationWindow.cs
- SqlProcedureAttribute.cs
- ScriptingAuthenticationServiceSection.cs
- NetworkAddressChange.cs
- FileRegion.cs
- BitmapImage.cs
- EventLogPermissionAttribute.cs
- AnchoredBlock.cs
- ApplicationInfo.cs
- _DomainName.cs
- ActionFrame.cs
- AnnotationHelper.cs
- PoisonMessageException.cs
- ScalarConstant.cs
- X509CertificateChain.cs
- PrintDialogException.cs
- GestureRecognizer.cs
- StreamedFramingRequestChannel.cs
- ResourceBinder.cs
- CounterCreationData.cs
- SessionEndedEventArgs.cs
- StringConcat.cs
- SQLRoleProvider.cs
- SoapSchemaImporter.cs
- XmlAutoDetectWriter.cs
- MbpInfo.cs
- FullTextState.cs
- XpsTokenContext.cs
- QueryPageSettingsEventArgs.cs
- ConnectionStringSettingsCollection.cs
- ProcessExitedException.cs
- TemplateNodeContextMenu.cs
- DropShadowBitmapEffect.cs
- OutputCacheProfileCollection.cs
- FunctionUpdateCommand.cs
- InternalTransaction.cs
- Calendar.cs
- BasicKeyConstraint.cs
- dbenumerator.cs
- EditingContext.cs
- ImageFormatConverter.cs
- DeferredRunTextReference.cs
- XmlnsPrefixAttribute.cs
- WebPartManager.cs
- FederatedMessageSecurityOverHttpElement.cs
- SystemTcpStatistics.cs
- ThemeInfoAttribute.cs
- XmlILStorageConverter.cs
- AxWrapperGen.cs
- Vector.cs
- TableMethodGenerator.cs
- Message.cs
- PropertyKey.cs
- AsymmetricAlgorithm.cs
- DataBindingExpressionBuilder.cs
- RoleManagerEventArgs.cs
- CallSiteOps.cs
- webclient.cs
- XslCompiledTransform.cs
- ResumeStoryboard.cs
- RegisteredArrayDeclaration.cs
- DataGridViewRowPrePaintEventArgs.cs
- ServicePointManagerElement.cs
- InkCanvasSelection.cs
- SqlCommand.cs
- SafeFileMappingHandle.cs
- BasicHttpSecurity.cs
- AutomationPatternInfo.cs
- designeractionbehavior.cs
- EpmSyndicationContentSerializer.cs
- PointAnimationUsingPath.cs
- SchemaCollectionPreprocessor.cs
- WindowsListViewGroupHelper.cs
- DataRowComparer.cs
- RenameRuleObjectDialog.cs
- ProcessProtocolHandler.cs