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
- DataExpression.cs
- Point3DConverter.cs
- Pair.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- DependencySource.cs
- CommunicationObjectAbortedException.cs
- PropertyDescriptor.cs
- KeyToListMap.cs
- BaseCodeDomTreeGenerator.cs
- BamlResourceContent.cs
- ReflectEventDescriptor.cs
- TriggerCollection.cs
- Variant.cs
- FormViewModeEventArgs.cs
- EditorResources.cs
- login.cs
- MimeTypeAttribute.cs
- IsolatedStorageFileStream.cs
- DataGridColumnHeaderAutomationPeer.cs
- ContainerFilterService.cs
- EventTrigger.cs
- DateTimeOffsetConverter.cs
- ObjectReaderCompiler.cs
- ListSurrogate.cs
- CompiledIdentityConstraint.cs
- DriveInfo.cs
- ResXResourceReader.cs
- UniqueConstraint.cs
- LocalizableAttribute.cs
- PartialTrustVisibleAssembly.cs
- DataColumnCollection.cs
- EventsTab.cs
- HostingEnvironment.cs
- SamlAction.cs
- UnsafeNativeMethods.cs
- MultiSelector.cs
- PointAnimationUsingKeyFrames.cs
- _WinHttpWebProxyDataBuilder.cs
- CollectionDataContractAttribute.cs
- TrackingDataItem.cs
- TreeNodeCollection.cs
- CodeComment.cs
- SharedStream.cs
- ThreadNeutralSemaphore.cs
- WindowsFont.cs
- PostBackTrigger.cs
- ViewSimplifier.cs
- oledbconnectionstring.cs
- SpellerError.cs
- NativeMethods.cs
- PersonalizationEntry.cs
- PrinterSettings.cs
- StoreAnnotationsMap.cs
- HttpRequest.cs
- EventHandlerList.cs
- HwndSubclass.cs
- SystemIPv4InterfaceProperties.cs
- WeakReference.cs
- ServiceDescriptionSerializer.cs
- InputLanguageEventArgs.cs
- HttpListener.cs
- TreeChangeInfo.cs
- DataKey.cs
- WrappedIUnknown.cs
- CollectionConverter.cs
- XmlTypeMapping.cs
- Form.cs
- HitTestFilterBehavior.cs
- CodeIdentifiers.cs
- BaseUriHelper.cs
- ResourceSetExpression.cs
- TypeToStringValueConverter.cs
- Scanner.cs
- SoapAttributeOverrides.cs
- ObjectViewQueryResultData.cs
- MessageBox.cs
- TraceProvider.cs
- RegexParser.cs
- ArrayElementGridEntry.cs
- HttpWebRequestElement.cs
- EastAsianLunisolarCalendar.cs
- FacetValues.cs
- MgmtConfigurationRecord.cs
- DesignTimeData.cs
- HttpCacheVary.cs
- XamlVector3DCollectionSerializer.cs
- DataGridViewBand.cs
- EventData.cs
- PointConverter.cs
- BlurBitmapEffect.cs
- odbcmetadatafactory.cs
- SByteStorage.cs
- TreeNodeCollection.cs
- DeviceFilterEditorDialog.cs
- QueryCacheEntry.cs
- WebUtility.cs
- ProfileEventArgs.cs
- Adorner.cs
- LOSFormatter.cs
- InputLangChangeEvent.cs