Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / EndpointReference.cs / 1 / EndpointReference.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // Define the internal representation of endpoint reference headers using System; using System.ServiceModel.Channels; using System.Collections; using System.Diagnostics; using System.IO; using System.ServiceModel; using System.Transactions; using System.Xml; using DiagnosticUtility = Microsoft.Transactions.Bridge.DiagnosticUtility; namespace Microsoft.Transactions.Wsat.Messaging { class EnlistmentHeader : AddressHeader { public const string HeaderName = DotNetAtomicTransactionExternalStrings.Enlistment; public const string HeaderNamespace = DotNetAtomicTransactionExternalStrings.Namespace; Guid enlistment; ControlProtocol protocol; public override string Name { get { return HeaderName; } } public override string Namespace { get { return HeaderNamespace; } } public EnlistmentHeader(Guid enlistment, ControlProtocol protocol) { this.enlistment = enlistment; this.protocol = protocol; } public EnlistmentHeader(Guid enlistment) : this(enlistment, ControlProtocol.None) { } protected override void OnWriteStartAddressHeader (XmlDictionaryWriter writer) { writer.WriteStartElement(DotNetAtomicTransactionExternalStrings.Prefix, XD.DotNetAtomicTransactionExternalDictionary.Enlistment, XD.DotNetAtomicTransactionExternalDictionary.Namespace); } protected override void OnWriteAddressHeaderContents (XmlDictionaryWriter writer) { if (this.protocol != ControlProtocol.None) { writer.WriteStartAttribute(XD.DotNetAtomicTransactionExternalDictionary.Protocol, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue((int)this.protocol); writer.WriteEndAttribute(); } writer.WriteValue(this.enlistment); } public static bool ReadFrom (Message message, out Guid enlistmentId, out ControlProtocol protocol) { enlistmentId = Guid.Empty; protocol = ControlProtocol.None; int index; try { index = message.Headers.FindHeader(HeaderName, HeaderNamespace, string.Empty); } catch (MessageHeaderException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); return false; } if (index >= 0) { XmlDictionaryReader reader = message.Headers.GetReaderAtHeader(index); using (reader) { ReadFrom(reader, out enlistmentId, out protocol); } MessageHeaderInfo headerInfo = message.Headers[index]; if (!message.Headers.UnderstoodHeaders.Contains(headerInfo)) { message.Headers.UnderstoodHeaders.Add(headerInfo); } return true; } return false; } public static void ReadFrom(XmlDictionaryReader reader, out Guid enlistment, out ControlProtocol protocol) { try { if (reader.IsEmptyElement || !reader.IsStartElement(XD.DotNetAtomicTransactionExternalDictionary.Enlistment, XD.DotNetAtomicTransactionExternalDictionary.Namespace)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnlistmentHeaderException(SR.GetString(SR.InvalidEnlistmentHeader))); } // Read attribute string protocolAttr = reader.GetAttribute(XD.DotNetAtomicTransactionExternalDictionary.Protocol, XD.DotNetAtomicTransactionExternalDictionary.Namespace); if (protocolAttr == null) { protocol = ControlProtocol.None; } else { protocol = (ControlProtocol) XmlConvert.ToInt32(protocolAttr.Trim()); // If present, must be durable or volatile if (protocol != ControlProtocol.Durable2PC && protocol != ControlProtocol.Volatile2PC) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnlistmentHeaderException(SR.GetString(SR.InvalidEnlistmentHeader))); } } enlistment = reader.ReadElementContentAsGuid(); } catch (FormatException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnlistmentHeaderException(SR.GetString(SR.InvalidEnlistmentHeader), e)); } catch (OverflowException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnlistmentHeaderException(SR.GetString(SR.InvalidEnlistmentHeader), e)); } catch (XmlException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnlistmentHeaderException(SR.GetString(SR.InvalidEnlistmentHeader), e)); } } } } // 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
- Graphics.cs
- TransactionsSectionGroup.cs
- InternalSendMessage.cs
- UnsafeNativeMethods.cs
- SendMailErrorEventArgs.cs
- MaskInputRejectedEventArgs.cs
- ColumnBinding.cs
- VectorCollectionConverter.cs
- ISAPIRuntime.cs
- ToolStripTextBox.cs
- XmlDataDocument.cs
- ToolStripGripRenderEventArgs.cs
- WindowsGraphicsCacheManager.cs
- AssemblySettingAttributes.cs
- WpfPayload.cs
- MemberAccessException.cs
- NullableBoolConverter.cs
- VirtualDirectoryMapping.cs
- ExecutionContext.cs
- DbConnectionClosed.cs
- XamlLoadErrorInfo.cs
- DesignerTransactionCloseEvent.cs
- TemplateEditingService.cs
- AuthenticationSchemesHelper.cs
- _IPv4Address.cs
- RelatedView.cs
- GeneralTransform.cs
- DataGridViewCellCancelEventArgs.cs
- ListViewUpdateEventArgs.cs
- TimeSpan.cs
- DiagnosticsConfigurationHandler.cs
- TextRangeProviderWrapper.cs
- ObjectKeyFrameCollection.cs
- StackOverflowException.cs
- InkPresenter.cs
- ApplicationDirectoryMembershipCondition.cs
- OracleParameterCollection.cs
- DiscoveryMessageSequence.cs
- SimpleBitVector32.cs
- StsCommunicationException.cs
- WindowsListViewItemCheckBox.cs
- ThreadAbortException.cs
- InnerItemCollectionView.cs
- QueryPageSettingsEventArgs.cs
- LambdaValue.cs
- JournalEntryListConverter.cs
- UniqueConstraint.cs
- MetaModel.cs
- ConfigXmlWhitespace.cs
- SigningProgress.cs
- SpecularMaterial.cs
- CounterSample.cs
- SignedInfo.cs
- TransformerInfoCollection.cs
- TrustSection.cs
- RSAPKCS1KeyExchangeFormatter.cs
- DataPagerFieldCollection.cs
- ScrollChrome.cs
- TextRangeEditTables.cs
- SettingsSection.cs
- VisualTreeUtils.cs
- EntityConnectionStringBuilderItem.cs
- TransactionBridge.cs
- hwndwrapper.cs
- CodeDOMUtility.cs
- SemanticBasicElement.cs
- DecimalFormatter.cs
- DataObjectAttribute.cs
- DBDataPermission.cs
- DataGridViewDataErrorEventArgs.cs
- ISFTagAndGuidCache.cs
- GlyphingCache.cs
- Condition.cs
- Win32Native.cs
- ReachFixedPageSerializerAsync.cs
- LinkLabelLinkClickedEvent.cs
- VerticalAlignConverter.cs
- QuaternionAnimation.cs
- VScrollBar.cs
- SafeFileMapViewHandle.cs
- GridViewUpdateEventArgs.cs
- OneWayElement.cs
- CalculatedColumn.cs
- MailDefinition.cs
- DataControlField.cs
- TagNameToTypeMapper.cs
- TraversalRequest.cs
- OptionalMessageQuery.cs
- FaultException.cs
- RadioButtonStandardAdapter.cs
- UnionCodeGroup.cs
- DictionaryBase.cs
- ColumnWidthChangedEvent.cs
- SqlTypeConverter.cs
- log.cs
- GradientStopCollection.cs
- IisHelper.cs
- Matrix.cs
- SpecialNameAttribute.cs
- HtmlTitle.cs