Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / TransportOutputChannel.cs / 1 / TransportOutputChannel.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System.Collections.Generic;
using System.ServiceModel;
using System.Diagnostics;
using System.Xml;
abstract class TransportOutputChannel : OutputChannel
{
bool anyHeadersToAdd;
bool manualAddressing;
MessageVersion messageVersion;
EndpointAddress to;
Uri via;
ToHeader toHeader;
protected TransportOutputChannel(ChannelManagerBase channelManager, EndpointAddress to, Uri via, bool manualAddressing, MessageVersion messageVersion)
: base(channelManager)
{
this.manualAddressing = manualAddressing;
this.messageVersion = messageVersion;
this.to = to;
this.via = via;
if (!manualAddressing && to != null)
{
Uri toUri;
if (to.IsAnonymous)
{
toUri = this.messageVersion.Addressing.AnonymousUri;
}
else if (to.IsNone)
{
toUri = this.messageVersion.Addressing.NoneUri;
}
else
{
toUri = to.Uri;
}
XmlDictionaryString dictionaryTo = new ToDictionary(toUri.AbsoluteUri).To;
this.toHeader = ToHeader.Create(toUri, dictionaryTo, messageVersion.Addressing);
this.anyHeadersToAdd = to.Headers.Count > 0;
}
}
protected bool ManualAddressing
{
get
{
return this.manualAddressing;
}
}
public MessageVersion MessageVersion
{
get
{
return this.messageVersion;
}
}
public override EndpointAddress RemoteAddress
{
get
{
return this.to;
}
}
public override Uri Via
{
get
{
return this.via;
}
}
protected override void AddHeadersTo(Message message)
{
base.AddHeadersTo(message);
if (toHeader != null)
{
// we don't use to.ApplyTo(message) since it's faster to cache and
// use the actual header then to call message.Headers.To = Uri...
message.Headers.SetToHeader(toHeader);
if (anyHeadersToAdd)
{
to.Headers.AddHeadersTo(message);
}
}
}
class ToDictionary : IXmlDictionary
{
XmlDictionaryString to;
public ToDictionary(string to)
{
this.to = new XmlDictionaryString(this, to, 0);
}
public XmlDictionaryString To
{
get
{
return to;
}
}
public bool TryLookup(string value, out XmlDictionaryString result)
{
if (value == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value");
if (value == to.Value)
{
result = to;
return true;
}
result = null;
return false;
}
public bool TryLookup(int key, out XmlDictionaryString result)
{
if (key == 0)
{
result = to;
return true;
}
result = null;
return false;
}
public bool TryLookup(XmlDictionaryString value, out XmlDictionaryString result)
{
if (value == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value");
if (value == to)
{
result = to;
return true;
}
result = null;
return false;
}
}
}
}
// 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
- SmtpMail.cs
- FileSystemWatcher.cs
- ObjRef.cs
- DataSourceControlBuilder.cs
- WebMethodAttribute.cs
- ImportCatalogPart.cs
- DataObjectEventArgs.cs
- XmlIlVisitor.cs
- Color.cs
- SendMailErrorEventArgs.cs
- PrintPreviewGraphics.cs
- ColumnTypeConverter.cs
- CaseInsensitiveComparer.cs
- RelOps.cs
- LocatorGroup.cs
- ScriptReferenceEventArgs.cs
- Point3DKeyFrameCollection.cs
- WindowsFormsHostPropertyMap.cs
- ZipFileInfo.cs
- HttpCachePolicyWrapper.cs
- ResourceCategoryAttribute.cs
- SerializerDescriptor.cs
- MatrixAnimationBase.cs
- WebSysDisplayNameAttribute.cs
- ReferenceService.cs
- LogLogRecord.cs
- TextTreeTextBlock.cs
- WebPartVerbsEventArgs.cs
- RawStylusInputCustomData.cs
- HwndStylusInputProvider.cs
- RectangleF.cs
- OperationInfo.cs
- ExclusiveCanonicalizationTransform.cs
- SignedXml.cs
- UrlMappingsModule.cs
- GeometryDrawing.cs
- NativeMethods.cs
- DataContractSerializerElement.cs
- EntityDataSourceChangingEventArgs.cs
- Operand.cs
- DataViewListener.cs
- DBCommandBuilder.cs
- LinqDataView.cs
- CanExecuteRoutedEventArgs.cs
- IxmlLineInfo.cs
- PersianCalendar.cs
- HtmlHistory.cs
- XmlDataCollection.cs
- Padding.cs
- SchemaType.cs
- ActivityDelegate.cs
- SqlRetyper.cs
- SafeSystemMetrics.cs
- ToolStripContainerDesigner.cs
- TypeValidationEventArgs.cs
- ConfigXmlComment.cs
- AsymmetricSignatureFormatter.cs
- AssemblyBuilder.cs
- EntityContainerEmitter.cs
- SectionInput.cs
- DiscardableAttribute.cs
- LocalizeDesigner.cs
- Pointer.cs
- XamlSerializationHelper.cs
- TextRangeSerialization.cs
- NotImplementedException.cs
- DocumentApplicationJournalEntry.cs
- WinEventQueueItem.cs
- DataServiceQueryOfT.cs
- precedingquery.cs
- SigningCredentials.cs
- MetadataCache.cs
- DependencyPropertyChangedEventArgs.cs
- XPathNode.cs
- XmlSchemaAnnotated.cs
- PermissionToken.cs
- GAC.cs
- IntegerFacetDescriptionElement.cs
- WebBrowser.cs
- Fonts.cs
- WebRequestModuleElementCollection.cs
- SettingsBindableAttribute.cs
- Page.cs
- InvokeProviderWrapper.cs
- MembershipSection.cs
- COM2IDispatchConverter.cs
- Int32Rect.cs
- PropertyConverter.cs
- FileEnumerator.cs
- HighlightVisual.cs
- ExpressionBindingsDialog.cs
- DashStyle.cs
- InlineObject.cs
- InOutArgument.cs
- SyndicationSerializer.cs
- ControlPropertyNameConverter.cs
- BaseAddressPrefixFilterElementCollection.cs
- NonClientArea.cs
- OverlappedAsyncResult.cs
- FormatSettings.cs