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
- SystemUdpStatistics.cs
- TreeViewImageIndexConverter.cs
- AsymmetricKeyExchangeFormatter.cs
- DesignTable.cs
- PolicyLevel.cs
- IgnorePropertiesAttribute.cs
- PasswordRecovery.cs
- WhitespaceRuleLookup.cs
- InputScope.cs
- xdrvalidator.cs
- SmiMetaDataProperty.cs
- Method.cs
- dataSvcMapFileLoader.cs
- HeaderCollection.cs
- BaseProcessor.cs
- RegistrySecurity.cs
- DesignTimeValidationFeature.cs
- DataGridViewRowCancelEventArgs.cs
- RuleElement.cs
- CustomErrorsSectionWrapper.cs
- ThreadStateException.cs
- SecureUICommand.cs
- Errors.cs
- SettingsSection.cs
- ReceiveActivityDesigner.cs
- UnicodeEncoding.cs
- SizeF.cs
- FtpWebResponse.cs
- HwndSource.cs
- QilLiteral.cs
- StylusOverProperty.cs
- AssemblyNameProxy.cs
- ServerIdentity.cs
- StrokeCollectionDefaultValueFactory.cs
- AmbientLight.cs
- BindingNavigator.cs
- DBCommandBuilder.cs
- TreeBuilder.cs
- ValueProviderWrapper.cs
- CornerRadius.cs
- IndependentlyAnimatedPropertyMetadata.cs
- DataSourceUtil.cs
- ListControlBoundActionList.cs
- ParallelSeparator.xaml.cs
- RoleManagerSection.cs
- CapabilitiesState.cs
- HandlerBase.cs
- File.cs
- DocumentReference.cs
- MetafileHeaderWmf.cs
- PageContent.cs
- VariantWrapper.cs
- OpenFileDialog.cs
- CategoryNameCollection.cs
- TabControl.cs
- SByteConverter.cs
- MetadataCacheItem.cs
- XmlNotation.cs
- LocationEnvironment.cs
- Point3DConverter.cs
- PeerObject.cs
- ClusterSafeNativeMethods.cs
- AnnotationMap.cs
- ReadOnlyDataSourceView.cs
- ServerIdentity.cs
- CodeAccessPermission.cs
- ResourceReader.cs
- OdbcConnectionHandle.cs
- MembershipValidatePasswordEventArgs.cs
- UnionExpr.cs
- SchemaElementDecl.cs
- DrawingBrush.cs
- OleDbRowUpdatedEvent.cs
- SequenceQuery.cs
- DataGridViewColumnCollectionDialog.cs
- ColorConverter.cs
- Automation.cs
- Thread.cs
- PathGeometry.cs
- ApplicationSettingsBase.cs
- DataGridToolTip.cs
- RawUIStateInputReport.cs
- FilteredAttributeCollection.cs
- DbMetaDataCollectionNames.cs
- QilInvoke.cs
- BindingContext.cs
- _OverlappedAsyncResult.cs
- AutoGeneratedFieldProperties.cs
- Profiler.cs
- MailAddress.cs
- SiblingIterators.cs
- SpotLight.cs
- Imaging.cs
- DesignerEditorPartChrome.cs
- NotifyIcon.cs
- RetrieveVirtualItemEventArgs.cs
- XmlDataSourceNodeDescriptor.cs
- CngAlgorithmGroup.cs
- Splitter.cs
- EventLogger.cs