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
- EmissiveMaterial.cs
- WebReference.cs
- FieldToken.cs
- _BaseOverlappedAsyncResult.cs
- ViewBox.cs
- ECDiffieHellmanCngPublicKey.cs
- LogoValidationException.cs
- DataGridViewCheckBoxColumn.cs
- IsolatedStorageFile.cs
- Attribute.cs
- EllipseGeometry.cs
- CodeSnippetExpression.cs
- ToolboxService.cs
- TextFormatterImp.cs
- ProfileProvider.cs
- _HTTPDateParse.cs
- SingleConverter.cs
- SmtpNtlmAuthenticationModule.cs
- MultiView.cs
- FormattedText.cs
- DataGridViewCellLinkedList.cs
- LocalServiceSecuritySettings.cs
- WinInet.cs
- ObjectDataSourceView.cs
- Identifier.cs
- RootProfilePropertySettingsCollection.cs
- dataSvcMapFileLoader.cs
- ToolStripButton.cs
- HorizontalAlignConverter.cs
- PointCollection.cs
- TrustManager.cs
- FragmentNavigationEventArgs.cs
- DBConcurrencyException.cs
- NativeCompoundFileAPIs.cs
- ColumnResizeAdorner.cs
- BindingCollection.cs
- RepeatButtonAutomationPeer.cs
- NetworkCredential.cs
- CacheMemory.cs
- LinqExpressionNormalizer.cs
- EntityContainerEntitySetDefiningQuery.cs
- ASCIIEncoding.cs
- Stroke2.cs
- FileRecordSequence.cs
- DeferredTextReference.cs
- TextDecorationCollection.cs
- RawStylusSystemGestureInputReport.cs
- IdentityManager.cs
- RenderContext.cs
- StructuredType.cs
- SafeNativeMethods.cs
- AccessViolationException.cs
- ErrorHandler.cs
- ArrayConverter.cs
- AlphaSortedEnumConverter.cs
- MatchingStyle.cs
- DataGridHelper.cs
- VScrollBar.cs
- ObjectListFieldsPage.cs
- ThaiBuddhistCalendar.cs
- SecurityManager.cs
- DbTransaction.cs
- ListInitExpression.cs
- BasicCellRelation.cs
- SiteMapProvider.cs
- TextEditorContextMenu.cs
- HtmlTableCell.cs
- BaseValidator.cs
- XmlSchemaDocumentation.cs
- InputBuffer.cs
- AudioSignalProblemOccurredEventArgs.cs
- Vector.cs
- DeviceContext2.cs
- ObjectDisposedException.cs
- PublisherIdentityPermission.cs
- GridViewDeletedEventArgs.cs
- _SslStream.cs
- RSAProtectedConfigurationProvider.cs
- PointUtil.cs
- _Connection.cs
- DbTransaction.cs
- HashCodeCombiner.cs
- SecurityState.cs
- NativeMethods.cs
- HandlerMappingMemo.cs
- DescendentsWalkerBase.cs
- DecoderFallback.cs
- IPipelineRuntime.cs
- XmlQualifiedName.cs
- CqlParser.cs
- DataListItemCollection.cs
- NestPullup.cs
- SignatureResourceHelper.cs
- FixedSOMPage.cs
- RIPEMD160.cs
- Registry.cs
- FileSystemWatcher.cs
- SchemaHelper.cs
- Missing.cs
- OrderedEnumerableRowCollection.cs