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
- QueryStack.cs
- HMACSHA512.cs
- EndPoint.cs
- WmlFormAdapter.cs
- OdbcCommandBuilder.cs
- FragmentQueryKB.cs
- ReflectionUtil.cs
- EdmComplexTypeAttribute.cs
- PropertyValueChangedEvent.cs
- AbsoluteQuery.cs
- EventLogConfiguration.cs
- DataGridViewElement.cs
- ListControlConvertEventArgs.cs
- GridViewRowPresenter.cs
- TraceContextEventArgs.cs
- BoundField.cs
- CodeCompiler.cs
- TextRunTypographyProperties.cs
- TextLine.cs
- MemoryRecordBuffer.cs
- AssociationTypeEmitter.cs
- NonBatchDirectoryCompiler.cs
- StringUtil.cs
- DocComment.cs
- arabicshape.cs
- WsatConfiguration.cs
- FormatterConverter.cs
- CodeCompiler.cs
- XmlSubtreeReader.cs
- WebPartVerbCollection.cs
- ItemsControlAutomationPeer.cs
- X509SecurityTokenProvider.cs
- MetadataCache.cs
- RepeatBehaviorConverter.cs
- HttpDigestClientCredential.cs
- TreeIterators.cs
- CallbackValidator.cs
- FontNameConverter.cs
- DataGridColumnDropSeparator.cs
- TimeSpanValidatorAttribute.cs
- JsonEncodingStreamWrapper.cs
- UInt64Converter.cs
- GAC.cs
- CapabilitiesState.cs
- ToolStripItemImageRenderEventArgs.cs
- QilValidationVisitor.cs
- StructuredTypeInfo.cs
- ContextConfiguration.cs
- WebBrowserContainer.cs
- ExtractedStateEntry.cs
- Visitor.cs
- TdsParserSessionPool.cs
- MatrixUtil.cs
- DataGridCell.cs
- GeometryModel3D.cs
- DesignParameter.cs
- Parser.cs
- documentsequencetextpointer.cs
- GridView.cs
- XamlPoint3DCollectionSerializer.cs
- AssemblyBuilder.cs
- ConfigurationPropertyAttribute.cs
- Int64AnimationUsingKeyFrames.cs
- DocumentApplicationDocumentViewer.cs
- ComponentResourceKey.cs
- PreDigestedSignedInfo.cs
- SchemaNotation.cs
- DataObject.cs
- ShutDownListener.cs
- DictationGrammar.cs
- FlowDocumentPaginator.cs
- ClientSettingsStore.cs
- Form.cs
- LoadedOrUnloadedOperation.cs
- SHA384Cng.cs
- XmlSchemaValidator.cs
- RowParagraph.cs
- ServiceChannelManager.cs
- MobileUITypeEditor.cs
- HttpResponseHeader.cs
- StrongNameUtility.cs
- ParenthesizePropertyNameAttribute.cs
- Classification.cs
- DebugHandleTracker.cs
- GridViewRowCollection.cs
- GeometryDrawing.cs
- GeneralTransform.cs
- WaitHandleCannotBeOpenedException.cs
- UrlParameterReader.cs
- WebBaseEventKeyComparer.cs
- ResponseStream.cs
- LinkDescriptor.cs
- WindowsBrush.cs
- TargetPerspective.cs
- SynchronousReceiveElement.cs
- DataBinding.cs
- ActivityMarkupSerializationProvider.cs
- FixedFlowMap.cs
- DataRowCollection.cs
- EdmFunctions.cs