Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / ListenerBinder.cs / 1 / ListenerBinder.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel.Channels; static class ListenerBinder { internal static IListenerBinder GetBinder(IChannelListener listener, MessageVersion messageVersion) { IChannelListenerinput = listener as IChannelListener ; if (input != null) return new InputListenerBinder(input, messageVersion); IChannelListener inputSession = listener as IChannelListener ; if (inputSession != null) return new InputSessionListenerBinder(inputSession, messageVersion); IChannelListener reply = listener as IChannelListener ; if (reply != null) return new ReplyListenerBinder(reply, messageVersion); IChannelListener replySession = listener as IChannelListener ; if (replySession != null) return new ReplySessionListenerBinder(replySession, messageVersion); IChannelListener duplex = listener as IChannelListener ; if (duplex != null) return new DuplexListenerBinder(duplex, messageVersion); IChannelListener duplexSession = listener as IChannelListener ; if (duplexSession != null) return new DuplexSessionListenerBinder(duplexSession, messageVersion); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.UnknownListenerType1, listener.Uri.AbsoluteUri))); } // ----------------------------------------------------------------------------------------------------------- // Listener Binders class DuplexListenerBinder : IListenerBinder { IRequestReplyCorrelator correlator; IChannelListener listener; MessageVersion messageVersion; internal DuplexListenerBinder(IChannelListener listener, MessageVersion messageVersion) { this.correlator = new RequestReplyCorrelator(); this.listener = listener; this.messageVersion = messageVersion; } public IChannelListener Listener { get { return this.listener; } } public MessageVersion MessageVersion { get { return this.messageVersion; } } public IChannelBinder Accept(TimeSpan timeout) { IDuplexChannel channel = this.listener.AcceptChannel(timeout); if (channel == null) return null; return new DuplexChannelBinder(channel, this.correlator, this.listener.Uri); } public IAsyncResult BeginAccept(TimeSpan timeout, AsyncCallback callback, object state) { return this.listener.BeginAcceptChannel(timeout, callback, state); } public IChannelBinder EndAccept(IAsyncResult result) { IDuplexChannel channel = this.listener.EndAcceptChannel(result); if (channel == null) return null; return new DuplexChannelBinder(channel, this.correlator, this.listener.Uri); } } class DuplexSessionListenerBinder : IListenerBinder { IRequestReplyCorrelator correlator; IChannelListener listener; MessageVersion messageVersion; internal DuplexSessionListenerBinder(IChannelListener listener, MessageVersion messageVersion) { this.correlator = new RequestReplyCorrelator(); this.listener = listener; this.messageVersion = messageVersion; } public IChannelListener Listener { get { return this.listener; } } public MessageVersion MessageVersion { get { return this.messageVersion; } } public IChannelBinder Accept(TimeSpan timeout) { IDuplexSessionChannel channel = this.listener.AcceptChannel(timeout); if (channel == null) return null; return new DuplexChannelBinder(channel, this.correlator, this.listener.Uri); } public IAsyncResult BeginAccept(TimeSpan timeout, AsyncCallback callback, object state) { return this.listener.BeginAcceptChannel(timeout, callback, state); } public IChannelBinder EndAccept(IAsyncResult result) { IDuplexSessionChannel channel = this.listener.EndAcceptChannel(result); if (channel == null) return null; return new DuplexChannelBinder(channel, this.correlator, this.listener.Uri); } } class InputListenerBinder : IListenerBinder { IChannelListener listener; MessageVersion messageVersion; internal InputListenerBinder(IChannelListener listener, MessageVersion messageVersion) { this.listener = listener; this.messageVersion = messageVersion; } public IChannelListener Listener { get { return this.listener; } } public MessageVersion MessageVersion { get { return this.messageVersion; } } public IChannelBinder Accept(TimeSpan timeout) { IInputChannel channel = this.listener.AcceptChannel(timeout); if (channel == null) return null; return new InputChannelBinder(channel, this.listener.Uri); } public IAsyncResult BeginAccept(TimeSpan timeout, AsyncCallback callback, object state) { return this.listener.BeginAcceptChannel(timeout, callback, state); } public IChannelBinder EndAccept(IAsyncResult result) { IInputChannel channel = this.listener.EndAcceptChannel(result); if (channel == null) return null; return new InputChannelBinder(channel, this.listener.Uri); } } class InputSessionListenerBinder : IListenerBinder { IChannelListener listener; MessageVersion messageVersion; internal InputSessionListenerBinder(IChannelListener listener, MessageVersion messageVersion) { this.listener = listener; this.messageVersion = messageVersion; } public IChannelListener Listener { get { return this.listener; } } public MessageVersion MessageVersion { get { return this.messageVersion; } } public IChannelBinder Accept(TimeSpan timeout) { IInputSessionChannel channel = this.listener.AcceptChannel(timeout); if (null == channel) return null; return new InputChannelBinder(channel, this.listener.Uri); } public IAsyncResult BeginAccept(TimeSpan timeout, AsyncCallback callback, object state) { return this.listener.BeginAcceptChannel(timeout, callback, state); } public IChannelBinder EndAccept(IAsyncResult result) { IInputSessionChannel channel = this.listener.EndAcceptChannel(result); if (channel == null) return null; return new InputChannelBinder(channel, this.listener.Uri); } } class ReplyListenerBinder : IListenerBinder { IChannelListener listener; MessageVersion messageVersion; internal ReplyListenerBinder(IChannelListener listener, MessageVersion messageVersion) { this.listener = listener; this.messageVersion = messageVersion; } public IChannelListener Listener { get { return this.listener; } } public MessageVersion MessageVersion { get { return this.messageVersion; } } public IChannelBinder Accept(TimeSpan timeout) { IReplyChannel channel = this.listener.AcceptChannel(timeout); if (channel == null) return null; return new ReplyChannelBinder(channel, listener.Uri); } public IAsyncResult BeginAccept(TimeSpan timeout, AsyncCallback callback, object state) { return this.listener.BeginAcceptChannel(timeout, callback, state); } public IChannelBinder EndAccept(IAsyncResult result) { IReplyChannel channel = this.listener.EndAcceptChannel(result); if (channel == null) return null; return new ReplyChannelBinder(channel, listener.Uri); } } class ReplySessionListenerBinder : IListenerBinder { IChannelListener listener; MessageVersion messageVersion; internal ReplySessionListenerBinder(IChannelListener listener, MessageVersion messageVersion) { this.listener = listener; this.messageVersion = messageVersion; } public IChannelListener Listener { get { return this.listener; } } public MessageVersion MessageVersion { get { return this.messageVersion; } } public IChannelBinder Accept(TimeSpan timeout) { IReplySessionChannel channel = this.listener.AcceptChannel(timeout); if (channel == null) return null; return new ReplyChannelBinder(channel, listener.Uri); } public IAsyncResult BeginAccept(TimeSpan timeout, AsyncCallback callback, object state) { return this.listener.BeginAcceptChannel(timeout, callback, state); } public IChannelBinder EndAccept(IAsyncResult result) { IReplySessionChannel channel = this.listener.EndAcceptChannel(result); if (channel == null) return null; return new ReplyChannelBinder(channel, listener.Uri); } } } } // 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
- EditorAttribute.cs
- Rect3DValueSerializer.cs
- CacheOutputQuery.cs
- StringExpressionSet.cs
- OleDbConnectionFactory.cs
- SchemaDeclBase.cs
- InvariantComparer.cs
- TemplateBindingExtensionConverter.cs
- WorkflowClientDeliverMessageWrapper.cs
- DetailsViewPageEventArgs.cs
- AdapterUtil.cs
- RestHandlerFactory.cs
- StringUtil.cs
- MaskedTextProvider.cs
- MultiPageTextView.cs
- ObjectParameterCollection.cs
- OleDbCommand.cs
- SystemTcpStatistics.cs
- ResourceDisplayNameAttribute.cs
- SafeMemoryMappedFileHandle.cs
- Context.cs
- TemplateNodeContextMenu.cs
- Rules.cs
- Material.cs
- DataBindEngine.cs
- DesignerPerfEventProvider.cs
- DocumentPaginator.cs
- AttributeUsageAttribute.cs
- TraceInternal.cs
- PatternMatcher.cs
- SQLBoolean.cs
- CallSiteHelpers.cs
- Scheduler.cs
- WorkflowApplicationCompletedException.cs
- WorkflowServiceHost.cs
- Empty.cs
- ThemeInfoAttribute.cs
- DefaultWorkflowLoaderService.cs
- DynamicResourceExtensionConverter.cs
- LinqDataSourceDeleteEventArgs.cs
- UseLicense.cs
- x509utils.cs
- ClientConvert.cs
- ToolStripItem.cs
- altserialization.cs
- InputManager.cs
- WCFModelStrings.Designer.cs
- CategoryState.cs
- ExtensibleClassFactory.cs
- PageThemeCodeDomTreeGenerator.cs
- SerializationInfoEnumerator.cs
- RadioButtonList.cs
- PrivateFontCollection.cs
- GiveFeedbackEventArgs.cs
- X509Certificate2Collection.cs
- KeyboardDevice.cs
- AuthenticationService.cs
- DetailsViewUpdatedEventArgs.cs
- XsdValidatingReader.cs
- BindMarkupExtensionSerializer.cs
- Literal.cs
- FlowPanelDesigner.cs
- DataGridRow.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- TextSearch.cs
- WizardForm.cs
- ControlBuilderAttribute.cs
- CheckBoxFlatAdapter.cs
- DictionaryMarkupSerializer.cs
- MachineKeySection.cs
- FullTextLine.cs
- Fonts.cs
- DateTime.cs
- SyndicationSerializer.cs
- IdentitySection.cs
- MouseGesture.cs
- EFAssociationProvider.cs
- _DisconnectOverlappedAsyncResult.cs
- DynamicFilter.cs
- SystemKeyConverter.cs
- TypeDependencyAttribute.cs
- XsdDuration.cs
- HiddenField.cs
- RuntimeIdentifierPropertyAttribute.cs
- CookieProtection.cs
- RepeaterItemCollection.cs
- TextSegment.cs
- TimeoutException.cs
- AccessDataSourceWizardForm.cs
- XmlParserContext.cs
- Model3D.cs
- RayHitTestParameters.cs
- shaperfactoryquerycacheentry.cs
- OutputScopeManager.cs
- CommandLibraryHelper.cs
- InvokeMethodActivity.cs
- EnvelopedPkcs7.cs
- RtfToXamlReader.cs
- ResourceDictionaryCollection.cs
- WebCategoryAttribute.cs