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
- TemplatePartAttribute.cs
- FieldDescriptor.cs
- InkCollectionBehavior.cs
- SubMenuStyle.cs
- COMException.cs
- KerberosSecurityTokenProvider.cs
- VisualStyleTypesAndProperties.cs
- NumericUpDownAcceleration.cs
- DataGridColumnHeader.cs
- CacheForPrimitiveTypes.cs
- OpenTypeLayoutCache.cs
- HashHelper.cs
- COM2ExtendedTypeConverter.cs
- SynchronizationValidator.cs
- MenuAdapter.cs
- EventSetter.cs
- LingerOption.cs
- PeerNode.cs
- DataGridTextBox.cs
- SelectedDatesCollection.cs
- CodeIterationStatement.cs
- MatrixCamera.cs
- ExceptionUtil.cs
- DialogResultConverter.cs
- ProcessModelSection.cs
- WebServiceAttribute.cs
- LocatorBase.cs
- XsltCompileContext.cs
- metadatamappinghashervisitor.cs
- StrongName.cs
- ADMembershipUser.cs
- DbCommandDefinition.cs
- MouseActionValueSerializer.cs
- NativeMethods.cs
- Rect.cs
- CodeNamespaceImport.cs
- WindowCollection.cs
- AuthenticationModulesSection.cs
- CalendarDay.cs
- OptimisticConcurrencyException.cs
- DocumentViewerBase.cs
- DirectoryObjectSecurity.cs
- FixedTextView.cs
- Region.cs
- CompositeControl.cs
- XmlSchemaCollection.cs
- NativeRecognizer.cs
- SslStream.cs
- InvokeBinder.cs
- DataGridRow.cs
- VirtualPathProvider.cs
- LinearQuaternionKeyFrame.cs
- EdmProviderManifest.cs
- CustomError.cs
- XPathExpr.cs
- CodeMethodInvokeExpression.cs
- EmbeddedMailObjectsCollection.cs
- SubpageParagraph.cs
- RegexCode.cs
- WindowsListViewItem.cs
- ProviderIncompatibleException.cs
- LinqDataSourceView.cs
- BindingMAnagerBase.cs
- RadioButtonFlatAdapter.cs
- EventMappingSettingsCollection.cs
- baseaxisquery.cs
- SecuritySessionServerSettings.cs
- DataControlImageButton.cs
- ValueUtilsSmi.cs
- AnimationClockResource.cs
- WebException.cs
- _MultipleConnectAsync.cs
- LoadWorkflowByInstanceKeyCommand.cs
- Or.cs
- DocumentCollection.cs
- TransformBlockRequest.cs
- EventDescriptor.cs
- ModuleBuilderData.cs
- SelectionRange.cs
- XmlTextReaderImplHelpers.cs
- XmlCharType.cs
- LookupBindingPropertiesAttribute.cs
- CultureSpecificStringDictionary.cs
- unitconverter.cs
- GacUtil.cs
- ProjectedSlot.cs
- WorkflowCompensationBehavior.cs
- WebPartTransformerAttribute.cs
- DbgCompiler.cs
- SpeechSynthesizer.cs
- Command.cs
- LocalServiceSecuritySettings.cs
- ReadOnlyHierarchicalDataSourceView.cs
- TextEndOfParagraph.cs
- ZipFileInfo.cs
- Control.cs
- VarRemapper.cs
- TPLETWProvider.cs
- Privilege.cs
- ParameterBuilder.cs