Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / DuplexChannel.cs / 1 / DuplexChannel.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; using System.ServiceModel; abstract class DuplexChannel : InputQueueChannel, IDuplexChannel { EndpointAddress localAddress; protected DuplexChannel(ChannelManagerBase channelManager, EndpointAddress localAddress) : base(channelManager) { this.localAddress = localAddress; } public virtual EndpointAddress LocalAddress { get { return localAddress; } } public abstract EndpointAddress RemoteAddress { get; } public abstract Uri Via { get; } public IAsyncResult BeginSend(Message message, AsyncCallback callback, object state) { return this.BeginSend(message, this.DefaultSendTimeout, callback, state); } public IAsyncResult BeginSend(Message message, TimeSpan timeout, AsyncCallback callback, object state) { if (message == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message"); if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); ThrowIfDisposedOrNotOpen(); AddHeadersTo(message); return OnBeginSend(message, timeout, callback, state); } public void EndSend(IAsyncResult result) { OnEndSend(result); } public override T GetProperty () { if (typeof(T) == typeof(IDuplexChannel)) { return (T)(object)this; } T baseProperty = base.GetProperty (); if (baseProperty != null) { return baseProperty; } return default(T); } protected abstract void OnSend(Message message, TimeSpan timeout); protected virtual IAsyncResult OnBeginSend(Message message, TimeSpan timeout, AsyncCallback callback, object state) { OnSend(message, timeout); return new CompletedAsyncResult(callback, state); } protected virtual void OnEndSend(IAsyncResult result) { CompletedAsyncResult.End(result); } public void Send(Message message) { this.Send(message, this.DefaultSendTimeout); } public void Send(Message message, TimeSpan timeout) { if (message == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message"); if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); ThrowIfDisposedOrNotOpen(); AddHeadersTo(message); OnSend(message, timeout); } protected virtual void AddHeadersTo(Message message) { } public Message Receive() { return this.Receive(this.DefaultReceiveTimeout); } public Message Receive(TimeSpan timeout) { if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); this.ThrowPending(); return InputChannel.HelpReceive(this, timeout); } public IAsyncResult BeginReceive(AsyncCallback callback, object state) { return this.BeginReceive(this.DefaultReceiveTimeout, callback, state); } public IAsyncResult BeginReceive(TimeSpan timeout, AsyncCallback callback, object state) { if (timeout < TimeSpan.Zero) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); } this.ThrowPending(); return InputChannel.HelpBeginReceive(this, timeout, callback, state); } public Message EndReceive(IAsyncResult result) { return InputChannel.HelpEndReceive(result); } public bool TryReceive(TimeSpan timeout, out Message message) { if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); this.ThrowPending(); return base.Dequeue(timeout, out message); } public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state) { if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); this.ThrowPending(); return base.BeginDequeue(timeout, callback, state); } public bool EndTryReceive(IAsyncResult result, out Message message) { return base.EndDequeue(result, out message); } public bool WaitForMessage(TimeSpan timeout) { if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); this.ThrowPending(); return base.WaitForItem(timeout); } public IAsyncResult BeginWaitForMessage(TimeSpan timeout, AsyncCallback callback, object state) { if (timeout < TimeSpan.Zero) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0))); this.ThrowPending(); return base.BeginWaitForItem(timeout, callback, state); } public bool EndWaitForMessage(IAsyncResult result) { return base.EndWaitForItem(result); } } } // 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
- EventSchemaTraceListener.cs
- NativeMethods.cs
- XmlReaderDelegator.cs
- ElementFactory.cs
- ServiceMetadataPublishingElement.cs
- connectionpool.cs
- LinkLabel.cs
- RegexTree.cs
- DesignerDataConnection.cs
- InstanceData.cs
- HandleRef.cs
- WindowsSolidBrush.cs
- ConfigXmlSignificantWhitespace.cs
- InfiniteTimeSpanConverter.cs
- SafeHandle.cs
- UndoEngine.cs
- SmiSettersStream.cs
- XsdValidatingReader.cs
- InvalidAsynchronousStateException.cs
- StatusBarDrawItemEvent.cs
- SoapSchemaMember.cs
- GridViewColumn.cs
- CapabilitiesPattern.cs
- SettingsBase.cs
- SoapServerProtocol.cs
- DnsPermission.cs
- WebProxyScriptElement.cs
- LiteralText.cs
- COM2Enum.cs
- WpfKnownMemberInvoker.cs
- CodePageEncoding.cs
- Overlapped.cs
- ClosureBinding.cs
- PageStatePersister.cs
- DescendentsWalkerBase.cs
- AuthorizationSection.cs
- OdbcTransaction.cs
- ProfileBuildProvider.cs
- Regex.cs
- IListConverters.cs
- DynamicPropertyHolder.cs
- PngBitmapEncoder.cs
- EditorResources.cs
- LineServices.cs
- ColorAnimation.cs
- ListViewGroup.cs
- CodeExpressionCollection.cs
- BinaryCommonClasses.cs
- DrawingContextWalker.cs
- StorageAssociationTypeMapping.cs
- CultureMapper.cs
- JoinSymbol.cs
- SqlInternalConnectionTds.cs
- SerialStream.cs
- IdentityValidationException.cs
- CharConverter.cs
- OracleColumn.cs
- ProbeDuplexAsyncResult.cs
- InputProviderSite.cs
- DataGridViewEditingControlShowingEventArgs.cs
- XmlLanguage.cs
- MemberHolder.cs
- Stack.cs
- MsmqAppDomainProtocolHandler.cs
- ApplyHostConfigurationBehavior.cs
- RemotingConfiguration.cs
- NoResizeSelectionBorderGlyph.cs
- ObfuscateAssemblyAttribute.cs
- ListenerAdapterBase.cs
- MergablePropertyAttribute.cs
- CodeParameterDeclarationExpression.cs
- TreeNodeClickEventArgs.cs
- BitmapSourceSafeMILHandle.cs
- DragEvent.cs
- SystemInfo.cs
- TypedReference.cs
- ErrorProvider.cs
- DataRowExtensions.cs
- SQLGuidStorage.cs
- TemplateBuilder.cs
- DataControlField.cs
- FunctionDetailsReader.cs
- GeneratedCodeAttribute.cs
- TextBoxAutomationPeer.cs
- SecurityContextSecurityToken.cs
- AssemblySettingAttributes.cs
- FormView.cs
- StringArrayConverter.cs
- HandlerBase.cs
- AsymmetricKeyExchangeFormatter.cs
- NetPeerTcpBinding.cs
- ArrayList.cs
- RegexCompilationInfo.cs
- ImageMapEventArgs.cs
- _KerberosClient.cs
- loginstatus.cs
- XmlElement.cs
- LocalizationComments.cs
- COM2IPerPropertyBrowsingHandler.cs
- ValidationSummary.cs