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
- CodeExpressionStatement.cs
- GrammarBuilderWildcard.cs
- HostSecurityManager.cs
- ToolStripMenuItem.cs
- BindingOperations.cs
- InfoCardBinaryReader.cs
- MetadataSection.cs
- BindingOperations.cs
- LassoHelper.cs
- Font.cs
- WindowsSysHeader.cs
- UnicodeEncoding.cs
- FieldToken.cs
- Win32.cs
- MessageSecurityOverHttp.cs
- XmlSchemaAll.cs
- panel.cs
- SqlXmlStorage.cs
- CharAnimationUsingKeyFrames.cs
- BuildProvider.cs
- InsufficientMemoryException.cs
- xmlformatgeneratorstatics.cs
- RuntimeTrackingProfile.cs
- PolygonHotSpot.cs
- altserialization.cs
- PropertyChangedEventArgs.cs
- CompatibleIComparer.cs
- TriggerActionCollection.cs
- ItemsPanelTemplate.cs
- XmlFormatExtensionAttribute.cs
- sqlpipe.cs
- CodeGeneratorAttribute.cs
- RangeContentEnumerator.cs
- GeneratedCodeAttribute.cs
- KeysConverter.cs
- AutomationPatternInfo.cs
- HMACRIPEMD160.cs
- UserCancellationException.cs
- AlternationConverter.cs
- IconEditor.cs
- CommonGetThemePartSize.cs
- WindowProviderWrapper.cs
- MailDefinition.cs
- AuthorizationSection.cs
- SpeechRecognitionEngine.cs
- State.cs
- ConfigsHelper.cs
- _OSSOCK.cs
- TypeValidationEventArgs.cs
- TextClipboardData.cs
- DataSvcMapFile.cs
- SQLChars.cs
- TextBoxAutoCompleteSourceConverter.cs
- SqlException.cs
- Parallel.cs
- DataGridViewCellValidatingEventArgs.cs
- ListDataBindEventArgs.cs
- AmbientValueAttribute.cs
- XmlSchemaSubstitutionGroup.cs
- KeyEvent.cs
- ConfigXmlSignificantWhitespace.cs
- PeerApplicationLaunchInfo.cs
- CompiledQueryCacheEntry.cs
- EncryptedType.cs
- RotateTransform3D.cs
- ColumnMapVisitor.cs
- XmlHierarchicalEnumerable.cs
- TextFindEngine.cs
- PtsPage.cs
- CapabilitiesUse.cs
- XmlDataSourceNodeDescriptor.cs
- Pkcs7Recipient.cs
- MemberMemberBinding.cs
- Utils.cs
- SettingsAttributeDictionary.cs
- WebPartHelpVerb.cs
- Queue.cs
- GlobalEventManager.cs
- HandleTable.cs
- TypeDescriptionProviderAttribute.cs
- newinstructionaction.cs
- EventTrigger.cs
- ReferenceConverter.cs
- XslVisitor.cs
- XmlTextEncoder.cs
- XPathException.cs
- BaseParser.cs
- DeviceContext.cs
- PinProtectionHelper.cs
- UriTemplateLiteralPathSegment.cs
- DbModificationCommandTree.cs
- RoutedPropertyChangedEventArgs.cs
- ApplicationSecurityInfo.cs
- SmtpFailedRecipientException.cs
- SerializationException.cs
- LogWriteRestartAreaAsyncResult.cs
- ParseHttpDate.cs
- Component.cs
- securitycriticaldataClass.cs
- controlskin.cs