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
- TypeUnloadedException.cs
- DSASignatureFormatter.cs
- ByteRangeDownloader.cs
- unsafeIndexingFilterStream.cs
- ZipIOExtraFieldElement.cs
- SerializationSectionGroup.cs
- ValidationErrorCollection.cs
- LoginStatusDesigner.cs
- FileStream.cs
- TemplatedMailWebEventProvider.cs
- EDesignUtil.cs
- WebEvents.cs
- XappLauncher.cs
- DataIdProcessor.cs
- RegexMatch.cs
- WindowsProgressbar.cs
- PenContexts.cs
- complextypematerializer.cs
- IdentityManager.cs
- GlyphsSerializer.cs
- ColorConvertedBitmapExtension.cs
- Oid.cs
- XmlSchemaDatatype.cs
- NetMsmqSecurityElement.cs
- FrameworkTemplate.cs
- ValidationPropertyAttribute.cs
- PanelStyle.cs
- path.cs
- Run.cs
- Accessors.cs
- NullableDoubleAverageAggregationOperator.cs
- ObjectDataSourceStatusEventArgs.cs
- GregorianCalendar.cs
- __TransparentProxy.cs
- DecimalStorage.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- EventSinkHelperWriter.cs
- RtfToXamlReader.cs
- PropagatorResult.cs
- MsmqUri.cs
- EventDescriptorCollection.cs
- VirtualDirectoryMapping.cs
- Int16AnimationBase.cs
- sqlmetadatafactory.cs
- COM2ExtendedTypeConverter.cs
- WebPartConnectionsDisconnectVerb.cs
- ProgressBar.cs
- PrintPreviewControl.cs
- ScriptManagerProxy.cs
- EventToken.cs
- IndexOutOfRangeException.cs
- SiteMapSection.cs
- WebAdminConfigurationHelper.cs
- XamlTreeBuilder.cs
- EntityDataSourceViewSchema.cs
- GroupBox.cs
- LayoutTableCell.cs
- OpCellTreeNode.cs
- AccessorTable.cs
- BrowserDefinitionCollection.cs
- ConfigUtil.cs
- XslException.cs
- _SpnDictionary.cs
- IIS7WorkerRequest.cs
- ToolStripContentPanelRenderEventArgs.cs
- OutputWindow.cs
- AccessedThroughPropertyAttribute.cs
- ResourceAttributes.cs
- SmiMetaData.cs
- Rule.cs
- TextTreeInsertUndoUnit.cs
- PerformanceCounterNameAttribute.cs
- X509SubjectKeyIdentifierClause.cs
- SrgsRule.cs
- ProfileProvider.cs
- SystemTcpStatistics.cs
- SpecialFolderEnumConverter.cs
- SafeHGlobalHandleCritical.cs
- WinOEToolBoxItem.cs
- TransactedReceiveData.cs
- wmiprovider.cs
- EventWaitHandleSecurity.cs
- XmlTextWriter.cs
- StrongTypingException.cs
- AlternateViewCollection.cs
- ControlCollection.cs
- SqlVersion.cs
- ExpandoObject.cs
- PersistChildrenAttribute.cs
- AspProxy.cs
- SystemIcmpV4Statistics.cs
- CharConverter.cs
- ScrollBar.cs
- BamlRecords.cs
- SecurityTimestamp.cs
- SmtpMail.cs
- MemberAccessException.cs
- WeakHashtable.cs
- OrthographicCamera.cs
- PathParser.cs