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
- DirectoryInfo.cs
- ProfileService.cs
- _PooledStream.cs
- LayoutTable.cs
- Image.cs
- ListViewItem.cs
- FixedPageProcessor.cs
- RayMeshGeometry3DHitTestResult.cs
- SharedPerformanceCounter.cs
- MessageHeader.cs
- ToolStripContainer.cs
- nulltextnavigator.cs
- SafeArrayTypeMismatchException.cs
- InternalConfigEventArgs.cs
- SmiMetaData.cs
- AtomMaterializer.cs
- ElementsClipboardData.cs
- CharacterBuffer.cs
- COM2PictureConverter.cs
- SessionPageStatePersister.cs
- TextContainerHelper.cs
- FamilyTypeface.cs
- CodeMethodReturnStatement.cs
- DataGridViewUtilities.cs
- MimeFormImporter.cs
- RequiredFieldValidator.cs
- MarginsConverter.cs
- ObjectReaderCompiler.cs
- Events.cs
- MouseActionValueSerializer.cs
- SoapInteropTypes.cs
- SchemaImporterExtensionElementCollection.cs
- MessageQueuePermissionAttribute.cs
- ErrorHandler.cs
- TargetParameterCountException.cs
- DrawingContextDrawingContextWalker.cs
- DrawToolTipEventArgs.cs
- NativeMethodsCLR.cs
- CheckBoxRenderer.cs
- RuleRefElement.cs
- ScriptMethodAttribute.cs
- DocumentViewerBaseAutomationPeer.cs
- ClientType.cs
- ScriptingScriptResourceHandlerSection.cs
- XmlTextEncoder.cs
- CodeTypeConstructor.cs
- DataGrid.cs
- RepeatBehaviorConverter.cs
- ReaderContextStackData.cs
- XmlSchemaInclude.cs
- MissingFieldException.cs
- NetworkInformationPermission.cs
- InstanceLockQueryResult.cs
- GridViewHeaderRowPresenter.cs
- ListMarkerSourceInfo.cs
- BitVector32.cs
- SchemaAttDef.cs
- InternalResources.cs
- HtmlInputControl.cs
- ParenthesizePropertyNameAttribute.cs
- Utils.cs
- AppDomainShutdownMonitor.cs
- CodeDOMUtility.cs
- ThreadAbortException.cs
- CodeIndexerExpression.cs
- TreeView.cs
- TextServicesProperty.cs
- MatrixConverter.cs
- InkSerializer.cs
- TreeViewHitTestInfo.cs
- Serializer.cs
- CustomWebEventKey.cs
- RbTree.cs
- TextRangeBase.cs
- NamespaceList.cs
- WebPartHelpVerb.cs
- TypeConverterAttribute.cs
- UIPropertyMetadata.cs
- CheckBoxField.cs
- HtmlWindow.cs
- Baml2006Reader.cs
- DataGridViewRowEventArgs.cs
- QilInvokeEarlyBound.cs
- ITextView.cs
- RegexTree.cs
- MonthChangedEventArgs.cs
- RelationshipEndMember.cs
- FieldNameLookup.cs
- ConfigurationStrings.cs
- RectangleHotSpot.cs
- Error.cs
- safesecurityhelperavalon.cs
- Vector3DConverter.cs
- XmlNavigatorStack.cs
- HwndAppCommandInputProvider.cs
- SHA512Cng.cs
- EntityCommand.cs
- propertyentry.cs
- ExpressionWriter.cs
- PeerInvitationResponse.cs