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
- StringValueSerializer.cs
- DataRowChangeEvent.cs
- OdbcHandle.cs
- SqlRewriteScalarSubqueries.cs
- ConstructorNeedsTagAttribute.cs
- TransformerTypeCollection.cs
- glyphs.cs
- HashSet.cs
- ReadOnlyNameValueCollection.cs
- ObjectItemAssemblyLoader.cs
- GridViewPageEventArgs.cs
- DataSvcMapFileSerializer.cs
- EntityStoreSchemaGenerator.cs
- CellTreeNodeVisitors.cs
- MethodInfo.cs
- DataGridViewDataConnection.cs
- LoadRetryStrategyFactory.cs
- Symbol.cs
- DataColumnCollection.cs
- BaseTemplateParser.cs
- FixedSOMElement.cs
- WebPartCloseVerb.cs
- XPathParser.cs
- CanExecuteRoutedEventArgs.cs
- IApplicationTrustManager.cs
- SimpleMailWebEventProvider.cs
- ValuePattern.cs
- CompositeFontInfo.cs
- TimelineGroup.cs
- SqlCachedBuffer.cs
- SchemaManager.cs
- DataFormats.cs
- AppliedDeviceFiltersEditor.cs
- FormsAuthenticationEventArgs.cs
- WmlLiteralTextAdapter.cs
- BindToObject.cs
- RegexReplacement.cs
- WsatRegistrationHeader.cs
- RectIndependentAnimationStorage.cs
- CodeAccessSecurityEngine.cs
- SRef.cs
- IconHelper.cs
- IsolatedStorageException.cs
- SafeNativeMethodsOther.cs
- ViewEventArgs.cs
- WebChannelFactory.cs
- WindowsAuthenticationModule.cs
- DataRowCollection.cs
- GetReadStreamResult.cs
- ClientRoleProvider.cs
- QuadTree.cs
- WindowsRegion.cs
- ObjectHelper.cs
- DmlSqlGenerator.cs
- XmlUTF8TextReader.cs
- Clipboard.cs
- URIFormatException.cs
- AsnEncodedData.cs
- UrlPath.cs
- ExtendedProtectionPolicyElement.cs
- CombinedTcpChannel.cs
- WebFaultClientMessageInspector.cs
- OuterGlowBitmapEffect.cs
- WebPartUserCapability.cs
- CompilerWrapper.cs
- PropertyItem.cs
- DataColumnSelectionConverter.cs
- BrowsableAttribute.cs
- FontStyle.cs
- StaticResourceExtension.cs
- CardSpaceException.cs
- OrthographicCamera.cs
- UnmanagedMemoryStreamWrapper.cs
- ResetableIterator.cs
- OSFeature.cs
- SerializationSectionGroup.cs
- BasicExpandProvider.cs
- CommonObjectSecurity.cs
- DateTimeParse.cs
- Attributes.cs
- WebPartZoneBase.cs
- WindowsFormsSectionHandler.cs
- Mutex.cs
- DecimalAnimation.cs
- Helpers.cs
- ActivityStateQuery.cs
- RowToParametersTransformer.cs
- ImportOptions.cs
- MobileRedirect.cs
- BaseResourcesBuildProvider.cs
- SiteMapDataSourceView.cs
- Codec.cs
- LazyLoadBehavior.cs
- EntityConnection.cs
- TemplateDefinition.cs
- Utils.cs
- ArrayConverter.cs
- IPCCacheManager.cs
- FloaterParaClient.cs
- DllHostInitializer.cs