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
- LiteralTextContainerControlBuilder.cs
- SimpleRecyclingCache.cs
- FlowDocumentPaginator.cs
- DetailsViewCommandEventArgs.cs
- TableParagraph.cs
- UnsafeNativeMethodsPenimc.cs
- SqlDataSourceConfigureFilterForm.cs
- IntegerValidatorAttribute.cs
- XsdDataContractExporter.cs
- MessageQueueConverter.cs
- LinqDataSourceUpdateEventArgs.cs
- DependencyPropertyHelper.cs
- StatusBarItemAutomationPeer.cs
- HtmlFormAdapter.cs
- XpsS0ValidatingLoader.cs
- Thumb.cs
- CapabilitiesPattern.cs
- Command.cs
- SerializationAttributes.cs
- Visitor.cs
- PropertyEmitterBase.cs
- XsltArgumentList.cs
- JobCollate.cs
- EmitterCache.cs
- TextBreakpoint.cs
- ContentFileHelper.cs
- InternalBufferOverflowException.cs
- ContentControl.cs
- SettingsProperty.cs
- TableStyle.cs
- AttachedAnnotation.cs
- Parallel.cs
- BooleanFacetDescriptionElement.cs
- EntityClassGenerator.cs
- ServicesUtilities.cs
- UriWriter.cs
- DataServiceRequestOfT.cs
- WorkflowInstanceTerminatedRecord.cs
- AddressUtility.cs
- ExpressionBuilderCollection.cs
- DrawingContext.cs
- ProtocolsSection.cs
- StoryFragments.cs
- ExpressionVisitor.cs
- ReachPageContentSerializer.cs
- LazyInitializer.cs
- WorkflowDesigner.cs
- SafeFileMappingHandle.cs
- DatagridviewDisplayedBandsData.cs
- SqlHelper.cs
- UniqueSet.cs
- ListBoxItem.cs
- Point3DAnimationBase.cs
- ServiceProviders.cs
- HostProtectionException.cs
- Matrix3DStack.cs
- ProgressChangedEventArgs.cs
- StrokeSerializer.cs
- AsyncInvokeContext.cs
- X509Utils.cs
- SoapSchemaImporter.cs
- SessionParameter.cs
- CapabilitiesState.cs
- SynchronizationContext.cs
- SapiGrammar.cs
- GetIndexBinder.cs
- DataServiceQueryException.cs
- ImmutablePropertyDescriptorGridEntry.cs
- EndpointDesigner.cs
- DeviceContext.cs
- MinMaxParagraphWidth.cs
- NotSupportedException.cs
- DataGridTextBox.cs
- StrongTypingException.cs
- ItemCheckedEvent.cs
- ThousandthOfEmRealDoubles.cs
- XmlReader.cs
- ParameterCollectionEditorForm.cs
- DataPager.cs
- LayoutUtils.cs
- CanonicalXml.cs
- _AcceptOverlappedAsyncResult.cs
- IdnElement.cs
- EmbeddedMailObjectsCollection.cs
- HtmlTextArea.cs
- ObfuscationAttribute.cs
- EllipseGeometry.cs
- BamlRecordWriter.cs
- Bitmap.cs
- SQLResource.cs
- QueueProcessor.cs
- GlyphCollection.cs
- SecurityTokenValidationException.cs
- TaskFormBase.cs
- XmlAttributeHolder.cs
- LineGeometry.cs
- AudioSignalProblemOccurredEventArgs.cs
- SparseMemoryStream.cs
- FormsAuthenticationUser.cs
- ConstructorBuilder.cs