Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / OutputChannel.cs / 1 / OutputChannel.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System.Collections.Generic;
using System.ServiceModel;
using System.Diagnostics;
using System.ServiceModel.Diagnostics;
abstract class OutputChannel : ChannelBase, IOutputChannel
{
protected OutputChannel(ChannelManagerBase manager)
: base(manager)
{
}
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);
this.EmitTrace(message);
return OnBeginSend(message, timeout, callback, state);
}
public void EndSend(IAsyncResult result)
{
OnEndSend(result);
}
public override T GetProperty()
{
if (typeof(T) == typeof(IOutputChannel))
{
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 abstract IAsyncResult OnBeginSend(Message message, TimeSpan timeout, AsyncCallback callback, object state);
protected abstract void OnEndSend(IAsyncResult 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);
this.EmitTrace(message);
OnSend(message, timeout);
}
protected virtual TraceRecord CreateSendTrace(Message message)
{
return MessageTransmitTraceRecord.CreateSendTraceRecord(message, this.RemoteAddress);
}
void EmitTrace(Message message)
{
if (DiagnosticUtility.ShouldTraceInformation)
{
TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.MessageSent,
this.CreateSendTrace(message), this, null);
}
}
protected virtual void AddHeadersTo(Message message)
{
}
}
}
// 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
- InternalResources.cs
- DetailsViewPageEventArgs.cs
- ContourSegment.cs
- AppAction.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- DatagridviewDisplayedBandsData.cs
- AssociatedControlConverter.cs
- UIHelper.cs
- _FtpDataStream.cs
- SystemIPGlobalProperties.cs
- ReceiveActivityDesigner.cs
- InternalBufferOverflowException.cs
- EditorAttribute.cs
- PropertyGroupDescription.cs
- MetafileHeader.cs
- CodeAssignStatement.cs
- Queue.cs
- ValueTypeFixupInfo.cs
- EndEvent.cs
- GetCardDetailsRequest.cs
- FixedLineResult.cs
- TimeSpanStorage.cs
- ObjectTypeMapping.cs
- CryptoProvider.cs
- Line.cs
- Maps.cs
- ContentOperations.cs
- BaseAppDomainProtocolHandler.cs
- DataObjectMethodAttribute.cs
- XmlSortKeyAccumulator.cs
- NativeCppClassAttribute.cs
- JoinCqlBlock.cs
- DataViewSetting.cs
- MasterPageParser.cs
- UnwrappedTypesXmlSerializerManager.cs
- DataServiceStreamProviderWrapper.cs
- IndicShape.cs
- DynamicRenderer.cs
- MultipartContentParser.cs
- TextServicesDisplayAttribute.cs
- IdentityHolder.cs
- Invariant.cs
- ProfileManager.cs
- TraceContextEventArgs.cs
- _TimerThread.cs
- WebPartManagerInternals.cs
- Dynamic.cs
- Point.cs
- Normalizer.cs
- Base64Encoder.cs
- BaseDataBoundControlDesigner.cs
- BitmapImage.cs
- FreezableDefaultValueFactory.cs
- BooleanConverter.cs
- MenuAdapter.cs
- Debug.cs
- InplaceBitmapMetadataWriter.cs
- RestHandlerFactory.cs
- MdImport.cs
- MimeObjectFactory.cs
- FrameworkRichTextComposition.cs
- TypeElementCollection.cs
- StorageEntityTypeMapping.cs
- BaseTemplateParser.cs
- XPathExpr.cs
- ConfigUtil.cs
- DataBindingHandlerAttribute.cs
- assemblycache.cs
- DecimalAnimationUsingKeyFrames.cs
- DataGridViewAdvancedBorderStyle.cs
- LogicalExpressionTypeConverter.cs
- TextSimpleMarkerProperties.cs
- SingleConverter.cs
- DataBoundControlActionList.cs
- XmlSchemaDatatype.cs
- CustomValidator.cs
- EntryWrittenEventArgs.cs
- AccessedThroughPropertyAttribute.cs
- XmlParserContext.cs
- TextParagraphProperties.cs
- VisualBasicSettingsHandler.cs
- UnsafeNativeMethods.cs
- CodeVariableDeclarationStatement.cs
- OpenTypeLayoutCache.cs
- TableCellCollection.cs
- DisableDpiAwarenessAttribute.cs
- BrowserCapabilitiesFactoryBase.cs
- StreamInfo.cs
- CommandID.cs
- Vector3dCollection.cs
- HtmlSelect.cs
- LogLogRecordEnumerator.cs
- PersonalizationEntry.cs
- ClientConfigurationHost.cs
- DataKey.cs
- ThousandthOfEmRealPoints.cs
- _SpnDictionary.cs
- IndependentlyAnimatedPropertyMetadata.cs
- ToolStripItem.cs
- Script.cs