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
- PeerNameRecord.cs
- LocationUpdates.cs
- EntityDataSourceContextCreatingEventArgs.cs
- StaticContext.cs
- DSASignatureDeformatter.cs
- BoundsDrawingContextWalker.cs
- XmlBindingWorker.cs
- SuppressMergeCheckAttribute.cs
- RegexRunner.cs
- GridViewCancelEditEventArgs.cs
- SecurityTokenSerializer.cs
- ManipulationDeltaEventArgs.cs
- MetricEntry.cs
- EntityDesignerBuildProvider.cs
- Image.cs
- ObjectDataSourceView.cs
- ModifierKeysValueSerializer.cs
- Region.cs
- PassportAuthentication.cs
- MulticastOption.cs
- UnsafeNativeMethods.cs
- PseudoWebRequest.cs
- PageThemeParser.cs
- TogglePatternIdentifiers.cs
- FrameworkTemplate.cs
- WebBrowser.cs
- MarkupCompiler.cs
- xdrvalidator.cs
- ViewDesigner.cs
- HybridWebProxyFinder.cs
- MemberExpression.cs
- MessageQueuePermission.cs
- _NetRes.cs
- DetailsViewRow.cs
- FrameAutomationPeer.cs
- ActivityExecutor.cs
- DocumentSequenceHighlightLayer.cs
- InvokePattern.cs
- InvokePattern.cs
- ErrorLog.cs
- Panel.cs
- SessionParameter.cs
- DBConnection.cs
- ReflectEventDescriptor.cs
- DictionaryEntry.cs
- IgnoreDeviceFilterElement.cs
- EncoderBestFitFallback.cs
- Token.cs
- DataRowComparer.cs
- CompositeCollection.cs
- CachedBitmap.cs
- _LoggingObject.cs
- WebScriptMetadataFormatter.cs
- SymbolMethod.cs
- ObjectViewQueryResultData.cs
- GuidelineCollection.cs
- _SingleItemRequestCache.cs
- WebPartUtil.cs
- TcpHostedTransportConfiguration.cs
- Rotation3D.cs
- EventHandlerList.cs
- ConfigurationValidatorAttribute.cs
- XmlSchemaResource.cs
- XPathNavigator.cs
- Keywords.cs
- TextTreeFixupNode.cs
- HtmlInputRadioButton.cs
- DataMemberFieldEditor.cs
- SqlRowUpdatingEvent.cs
- XmlSchemaNotation.cs
- DecimalConverter.cs
- TypeConvertions.cs
- HostSecurityManager.cs
- ellipse.cs
- BindingNavigator.cs
- CqlQuery.cs
- AutomationProperty.cs
- XmlStreamStore.cs
- AmbientValueAttribute.cs
- TextProviderWrapper.cs
- RayMeshGeometry3DHitTestResult.cs
- ImageSource.cs
- Inflater.cs
- LayoutExceptionEventArgs.cs
- HtmlTitle.cs
- EraserBehavior.cs
- RegexFCD.cs
- DocumentViewerBaseAutomationPeer.cs
- Calendar.cs
- ListViewTableCell.cs
- assemblycache.cs
- HtmlWindowCollection.cs
- ScrollContentPresenter.cs
- GridViewColumnHeader.cs
- FrameDimension.cs
- SqlDataSourceConnectionPanel.cs
- CriticalHandle.cs
- DataServiceEntityAttribute.cs
- XmlDataSourceNodeDescriptor.cs
- VectorValueSerializer.cs