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
- HtmlEncodedRawTextWriter.cs
- EdmSchemaError.cs
- RSAOAEPKeyExchangeFormatter.cs
- DrawItemEvent.cs
- SecurityChannelListener.cs
- SystemParameters.cs
- ExeConfigurationFileMap.cs
- CommunicationObject.cs
- mda.cs
- AddValidationError.cs
- WebScriptServiceHost.cs
- SqlDataSource.cs
- TypeBrowserDialog.cs
- updateconfighost.cs
- FileDialogPermission.cs
- PartialArray.cs
- OleDbSchemaGuid.cs
- SecurityTokenResolver.cs
- TextTreeUndo.cs
- HuffModule.cs
- BindingOperations.cs
- ListManagerBindingsCollection.cs
- BatchServiceHost.cs
- PageAsyncTask.cs
- ColumnPropertiesGroup.cs
- WriteFileContext.cs
- BlobPersonalizationState.cs
- CopyAction.cs
- FrameworkElement.cs
- SystemDiagnosticsSection.cs
- ContextStaticAttribute.cs
- ScaleTransform3D.cs
- TableItemStyle.cs
- DecoderFallback.cs
- AsyncStreamReader.cs
- DoubleConverter.cs
- PlaceHolder.cs
- EtwProvider.cs
- GACIdentityPermission.cs
- HostedImpersonationContext.cs
- ChannelManagerHelpers.cs
- PagesChangedEventArgs.cs
- PageThemeBuildProvider.cs
- ControlPropertyNameConverter.cs
- Config.cs
- SqlRemoveConstantOrderBy.cs
- DynamicDataRouteHandler.cs
- CngAlgorithmGroup.cs
- WebBrowserProgressChangedEventHandler.cs
- ReachUIElementCollectionSerializer.cs
- COM2Properties.cs
- webeventbuffer.cs
- CaseExpr.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- SettingsAttributeDictionary.cs
- InvalidateEvent.cs
- DesignerDataSchemaClass.cs
- EventMappingSettings.cs
- ChangeTracker.cs
- RSAPKCS1SignatureDeformatter.cs
- XmlSchemaImporter.cs
- SEHException.cs
- LinqDataSourceView.cs
- ThicknessKeyFrameCollection.cs
- ScrollEvent.cs
- IProvider.cs
- FormsAuthenticationTicket.cs
- SystemParameters.cs
- AnnotationMap.cs
- FormViewDeleteEventArgs.cs
- RequestTimeoutManager.cs
- WebServiceResponse.cs
- SendKeys.cs
- ProfileModule.cs
- DeviceContexts.cs
- CachedPathData.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- SqlClientWrapperSmiStream.cs
- ListViewUpdatedEventArgs.cs
- ColumnHeaderConverter.cs
- BasicCellRelation.cs
- HttpDictionary.cs
- sqlmetadatafactory.cs
- GridViewRowCollection.cs
- VectorCollectionConverter.cs
- FormViewPagerRow.cs
- EntitySqlQueryCacheEntry.cs
- ByteAnimationUsingKeyFrames.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- Message.cs
- MulticastOption.cs
- LineMetrics.cs
- Type.cs
- RewritingPass.cs
- CalendarKeyboardHelper.cs
- OdbcParameterCollection.cs
- VirtualDirectoryMappingCollection.cs
- ZipIOCentralDirectoryBlock.cs
- BaseCodeDomTreeGenerator.cs
- HttpVersion.cs