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
- AssemblyBuilder.cs
- PeerPresenceInfo.cs
- UnlockCardRequest.cs
- DataGrid.cs
- FileFormatException.cs
- Graph.cs
- DefaultMemberAttribute.cs
- ScrollChrome.cs
- XmlDataSourceView.cs
- CommandLineParser.cs
- SerializationHelper.cs
- SeparatorAutomationPeer.cs
- XmlSchemaAnnotated.cs
- Range.cs
- HiddenFieldPageStatePersister.cs
- Queue.cs
- ApplicationDirectoryMembershipCondition.cs
- SafeNativeMethodsMilCoreApi.cs
- SafeEventHandle.cs
- LogPolicy.cs
- SmtpClient.cs
- HiddenFieldPageStatePersister.cs
- KeyInterop.cs
- GeneralTransformGroup.cs
- DataGridViewColumnCollection.cs
- DataServiceHostFactory.cs
- ConnectionManagementSection.cs
- WebPartAuthorizationEventArgs.cs
- TemplateControlCodeDomTreeGenerator.cs
- CompilerTypeWithParams.cs
- ServiceDurableInstance.cs
- XmlArrayItemAttributes.cs
- AssemblyNameProxy.cs
- ParameterBuilder.cs
- ApplicationInfo.cs
- ParameterCollection.cs
- ApplicationServicesHostFactory.cs
- Repeater.cs
- SqlError.cs
- Config.cs
- DesignerObjectListAdapter.cs
- WeakReferenceEnumerator.cs
- TaiwanCalendar.cs
- HandoffBehavior.cs
- TabPage.cs
- XPathParser.cs
- MenuCommand.cs
- Size3D.cs
- odbcmetadatacollectionnames.cs
- XmlCharType.cs
- _BaseOverlappedAsyncResult.cs
- Evidence.cs
- HttpServerChannel.cs
- PropertyOverridesTypeEditor.cs
- Imaging.cs
- ObjectDataSourceDesigner.cs
- DoubleAnimation.cs
- BitmapEffectState.cs
- ZoneButton.cs
- Matrix.cs
- PriorityChain.cs
- DesignerAdRotatorAdapter.cs
- XmlElementList.cs
- MessageEncodingBindingElement.cs
- DuplexChannelBinder.cs
- ProfileManager.cs
- KeysConverter.cs
- WebReferenceCollection.cs
- BrowsableAttribute.cs
- SafeNativeMethods.cs
- SimpleHandlerBuildProvider.cs
- Point4DValueSerializer.cs
- TimeSpanValidatorAttribute.cs
- ObjectStateEntryDbDataRecord.cs
- HijriCalendar.cs
- GeometryHitTestParameters.cs
- DateTimeConverter2.cs
- Point3DAnimationBase.cs
- FontResourceCache.cs
- ErrorTableItemStyle.cs
- ConstantExpression.cs
- Literal.cs
- AudioFormatConverter.cs
- LightweightCodeGenerator.cs
- Size3D.cs
- InitializerFacet.cs
- SourceChangedEventArgs.cs
- ActiveDocumentEvent.cs
- ScriptResourceAttribute.cs
- ServiceContractAttribute.cs
- Thickness.cs
- InputScopeManager.cs
- EpmSourcePathSegment.cs
- ConstructorBuilder.cs
- SelectionEditingBehavior.cs
- JsonClassDataContract.cs
- PerfService.cs
- DependencyPropertyHelper.cs
- FormsAuthenticationEventArgs.cs
- PermissionListSet.cs