Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Transactions / WsatTransactionHeader.cs / 1 / WsatTransactionHeader.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Transactions
{
using System;
using System.ServiceModel.Channels;
using System.Diagnostics;
using System.ServiceModel;
using System.Transactions;
using System.Xml;
using Microsoft.Transactions.Wsat.Messaging;
using Microsoft.Transactions.Wsat.Protocol;
class WsatTransactionHeader : MessageHeader
{
string wsatHeaderElement;
string wsatNamespace;
CoordinationContext context;
public WsatTransactionHeader(CoordinationContext context, ProtocolVersion protocolVersion)
{
this.context = context;
CoordinationStrings coordinationStrings = CoordinationStrings.Version(protocolVersion);
this.wsatHeaderElement = coordinationStrings.CoordinationContext;
this.wsatNamespace = coordinationStrings.Namespace;
}
public override bool MustUnderstand
{
get { return true; }
}
public override string Name
{
get { return wsatHeaderElement; }
}
public override string Namespace
{
get { return wsatNamespace; }
}
public static CoordinationContext GetCoordinationContext(Message message, ProtocolVersion protocolVersion)
{
CoordinationStrings coordinationStrings = CoordinationStrings.Version(protocolVersion);
string locWsatHeaderElement = coordinationStrings.CoordinationContext;
string locWsatNamespace = coordinationStrings.Namespace;
int index;
try
{
index = message.Headers.FindHeader(locWsatHeaderElement, locWsatNamespace);
}
catch (MessageHeaderException e)
{
DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning);
return null;
}
if (index < 0)
return null;
CoordinationContext context;
XmlDictionaryReader reader = message.Headers.GetReaderAtHeader(index);
using (reader)
{
context = GetCoordinationContext(reader, protocolVersion);
}
MessageHeaderInfo header = message.Headers[index];
if (!message.Headers.UnderstoodHeaders.Contains(header))
{
message.Headers.UnderstoodHeaders.Add(header);
}
return context;
}
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
{
this.context.WriteContent(writer);
}
public static CoordinationContext GetCoordinationContext(XmlDictionaryReader reader, ProtocolVersion protocolVersion)
{
CoordinationXmlDictionaryStrings coordinationXmlDictionaryStrings =
CoordinationXmlDictionaryStrings.Version(protocolVersion);
try
{
return CoordinationContext.ReadFrom(reader,
coordinationXmlDictionaryStrings.CoordinationContext,
coordinationXmlDictionaryStrings.Namespace,
protocolVersion);
}
catch (InvalidCoordinationContextException e)
{
DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Error);
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new TransactionException(SR.GetString(SR.WsatHeaderCorrupt), e));
}
}
public static void WriteElement(XmlDictionaryWriter writer,
CoordinationContext context,
ProtocolVersion protocolVersion)
{
CoordinationXmlDictionaryStrings coordinationXmlDictionaryStrings =
CoordinationXmlDictionaryStrings.Version(protocolVersion);
context.WriteTo(writer,
coordinationXmlDictionaryStrings.CoordinationContext,
coordinationXmlDictionaryStrings.Namespace);
}
public static bool IsStartElement(XmlDictionaryReader reader, ProtocolVersion protocolVersion)
{
CoordinationXmlDictionaryStrings coordinationXmlDictionaryStrings =
CoordinationXmlDictionaryStrings.Version(protocolVersion);
return reader.IsStartElement(coordinationXmlDictionaryStrings.CoordinationContext,
coordinationXmlDictionaryStrings.Namespace);
}
}
}
// 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
- BevelBitmapEffect.cs
- TTSEngineProxy.cs
- RepeaterItemCollection.cs
- ProfilePropertySettings.cs
- LineSegment.cs
- ProtocolsConfigurationHandler.cs
- RotateTransform.cs
- ReliableSessionElement.cs
- StringBuilder.cs
- Point.cs
- Attributes.cs
- IndexedEnumerable.cs
- LazyTextWriterCreator.cs
- InstrumentationTracker.cs
- DispatcherSynchronizationContext.cs
- BindingGroup.cs
- UnhandledExceptionEventArgs.cs
- SymbolEqualComparer.cs
- XPathItem.cs
- NotifyParentPropertyAttribute.cs
- FixedSOMLineRanges.cs
- JournalEntryListConverter.cs
- SharedPerformanceCounter.cs
- Page.cs
- ColorConvertedBitmapExtension.cs
- PropertyHelper.cs
- HtmlButton.cs
- LambdaReference.cs
- DataContractSerializer.cs
- Parsers.cs
- WebPartConnectionCollection.cs
- ConfigXmlWhitespace.cs
- PeerName.cs
- SessionStateModule.cs
- Color.cs
- GridViewSelectEventArgs.cs
- SynchronizedDispatch.cs
- FamilyTypefaceCollection.cs
- StateElement.cs
- CodeDefaultValueExpression.cs
- DbConnectionPool.cs
- DataKeyCollection.cs
- ScrollViewer.cs
- odbcmetadatacolumnnames.cs
- HeaderedItemsControl.cs
- NumberFunctions.cs
- DesignerActionUIStateChangeEventArgs.cs
- dataobject.cs
- MissingManifestResourceException.cs
- AsymmetricKeyExchangeFormatter.cs
- RIPEMD160.cs
- MailDefinitionBodyFileNameEditor.cs
- log.cs
- ListView.cs
- PassportAuthenticationEventArgs.cs
- DetailsViewPageEventArgs.cs
- PathFigureCollection.cs
- RequestQueue.cs
- DateBoldEvent.cs
- WebRequestModulesSection.cs
- TypeContext.cs
- DataGridColumn.cs
- XmlUTF8TextWriter.cs
- CodeDirectiveCollection.cs
- DataGridViewRowStateChangedEventArgs.cs
- EntitySqlQueryCacheKey.cs
- ObservableDictionary.cs
- CodeTypeReference.cs
- GZipStream.cs
- Helper.cs
- TextViewSelectionProcessor.cs
- SafeNativeMethods.cs
- AddingNewEventArgs.cs
- SafeProcessHandle.cs
- ScrollViewer.cs
- EngineSite.cs
- SvcMapFileSerializer.cs
- SafeFileMapViewHandle.cs
- TableParagraph.cs
- CommandField.cs
- ReferentialConstraintRoleElement.cs
- _HeaderInfo.cs
- XNodeNavigator.cs
- CodeSnippetTypeMember.cs
- CreateDataSourceDialog.cs
- nulltextnavigator.cs
- Set.cs
- GatewayDefinition.cs
- ExpressionNormalizer.cs
- ProxyWebPartManager.cs
- VolatileEnlistmentState.cs
- CacheSection.cs
- XmlILModule.cs
- tabpagecollectioneditor.cs
- SerializableAuthorizationContext.cs
- HttpProfileBase.cs
- OutputScope.cs
- SingleTagSectionHandler.cs
- ServicePointManagerElement.cs
- CopyAction.cs