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
- BehaviorEditorPart.cs
- PartitionedStream.cs
- ExtensibleClassFactory.cs
- DescriptionAttribute.cs
- MergablePropertyAttribute.cs
- FailedToStartupUIException.cs
- TraceHandler.cs
- DesignerExtenders.cs
- WorkflowInstanceTerminatedRecord.cs
- TextProperties.cs
- RadioButtonList.cs
- XPathParser.cs
- RijndaelManaged.cs
- RankException.cs
- InputChannelAcceptor.cs
- RoleGroup.cs
- SqlMethodCallConverter.cs
- StyleCollection.cs
- DataSourceCacheDurationConverter.cs
- PassportAuthenticationEventArgs.cs
- CompressEmulationStream.cs
- DataSourceDescriptorCollection.cs
- SimpleParser.cs
- WebPartMinimizeVerb.cs
- File.cs
- Guid.cs
- TextEmbeddedObject.cs
- LocatorBase.cs
- SqlParameterCollection.cs
- TokenBasedSetEnumerator.cs
- DefaultHttpHandler.cs
- SingleTagSectionHandler.cs
- Condition.cs
- Separator.cs
- StructuralObject.cs
- HtmlGenericControl.cs
- PathFigureCollection.cs
- EtwProvider.cs
- PropertyValueChangedEvent.cs
- ObjectKeyFrameCollection.cs
- BuildProvider.cs
- RubberbandSelector.cs
- EnumBuilder.cs
- ExceptionValidationRule.cs
- ImageIndexConverter.cs
- MailDefinition.cs
- XmlSchemaComplexContentExtension.cs
- ProfessionalColorTable.cs
- TransactionState.cs
- AssemblyAttributes.cs
- DLinqAssociationProvider.cs
- ImageMapEventArgs.cs
- IsolatedStorageFilePermission.cs
- SystemIPInterfaceProperties.cs
- HostSecurityManager.cs
- SerialErrors.cs
- LayoutEngine.cs
- MenuAutomationPeer.cs
- TextRange.cs
- ReliableReplySessionChannel.cs
- SimpleHandlerBuildProvider.cs
- LicenseException.cs
- WinFormsSpinner.cs
- ProfileGroupSettingsCollection.cs
- PolicyImporterElement.cs
- Base64Encoder.cs
- IMembershipProvider.cs
- VoiceChangeEventArgs.cs
- StructuredProperty.cs
- NavigationWindow.cs
- DataPagerFieldItem.cs
- PatternMatcher.cs
- InputChannelBinder.cs
- FormsAuthenticationUserCollection.cs
- WebPartEditorApplyVerb.cs
- PersianCalendar.cs
- Fonts.cs
- DragStartedEventArgs.cs
- Localizer.cs
- ListViewEditEventArgs.cs
- Stylus.cs
- AssemblyNameEqualityComparer.cs
- DocumentGridPage.cs
- WeakEventManager.cs
- ConfigurationValidatorAttribute.cs
- AssociationSet.cs
- AuthorizationSection.cs
- Span.cs
- X509Chain.cs
- HotSpotCollection.cs
- Quaternion.cs
- MobilePage.cs
- TiffBitmapDecoder.cs
- SqlClientWrapperSmiStreamChars.cs
- LinqDataSourceDeleteEventArgs.cs
- CodeChecksumPragma.cs
- embossbitmapeffect.cs
- DataGridViewButtonCell.cs
- MouseDevice.cs
- RIPEMD160.cs