Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Transactions / OletxTransactionFormatter.cs / 2 / OletxTransactionFormatter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Transactions { using System; using System.Runtime.InteropServices; using System.ServiceModel; using System.ServiceModel.Channels; using System.Transactions; class OleTxTransactionFormatter : TransactionFormatter { static OleTxTransactionHeader emptyTransactionHeader = new OleTxTransactionHeader(null, null); public override MessageHeader EmptyTransactionHeader { get {return emptyTransactionHeader;} } public override void WriteTransaction(Transaction transaction, Message message) { byte[] propToken = TransactionInterop.GetTransmitterPropagationToken(transaction); // Find or compute extended information for the transaction WsatExtendedInformation info; if (!WsatExtendedInformationCache.Find(transaction, out info)) { uint timeout = GetTimeoutFromTransaction(transaction); info = (timeout != 0) ? new WsatExtendedInformation(null, timeout) : null; } OleTxTransactionHeader header = new OleTxTransactionHeader(propToken, info); message.Headers.Add(header); } public override TransactionInfo ReadTransaction(Message message) { OleTxTransactionHeader header = OleTxTransactionHeader.ReadFrom(message); if (header == null) return null; return new OleTxTransactionInfo(header); } public static uint GetTimeoutFromTransaction(Transaction transaction) { // For transactions created inside this process, we can ask ITransactionOptions IDtcTransaction dtcTransaction = TransactionInterop.GetDtcTransaction(transaction); ITransactionOptions transactionOptions = (ITransactionOptions)dtcTransaction; XACTOPT options; transactionOptions.GetOptions(out options); // For transactions not created inside this process, this will return zero return options.ulTimeout; } public static void GetTransactionAttributes(Transaction transaction, out uint timeout, out IsolationFlags isoFlags, out string description) { IDtcTransaction dtcTransaction = TransactionInterop.GetDtcTransaction(transaction); ITransactionOptions transactionOptions = (ITransactionOptions)dtcTransaction; ISaneDtcTransaction saneTransaction = (ISaneDtcTransaction)dtcTransaction; XACTOPT options; transactionOptions.GetOptions(out options); // For transactions not created inside this process, this will be zero timeout = options.ulTimeout; description = options.szDescription; XACTTRANSINFO info; saneTransaction.GetTransactionInfo(out info); isoFlags = info.isoFlags; } [StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Ansi)] struct XACTOPT { public uint ulTimeout; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string szDescription; } [StructLayout(LayoutKind.Sequential, Pack = 4)] struct XACTTRANSINFO { public Guid uow; public IsolationLevel isoLevel; public IsolationFlags isoFlags; public uint grfTCSupported; public uint grfRMSupported; public uint grfTCSupportedRetaining; public uint grfRMSupportedRetaining; } [ ComImport, Guid("3A6AD9E0-23B9-11cf-AD60-00AA00A74CCD"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown) ] interface ITransactionOptions { void SetOptions([In] ref XACTOPT pOptions); void GetOptions([Out] out XACTOPT pOptions); } [ ComImport, GuidAttribute("0fb15084-af41-11ce-bd2b-204c4f4f5020"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown) ] interface ISaneDtcTransaction { void Abort(IntPtr reason, int retaining, int async); void Commit(int retaining, int commitType, int reserved); void GetTransactionInfo(out XACTTRANSINFO transactionInformation); } } } // 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
- DelegatedStream.cs
- LinqTreeNodeEvaluator.cs
- ComplexLine.cs
- XmlnsCompatibleWithAttribute.cs
- ToolStripGrip.cs
- Span.cs
- ArrangedElementCollection.cs
- FlatButtonAppearance.cs
- MorphHelpers.cs
- HelpKeywordAttribute.cs
- HuffmanTree.cs
- EventKeyword.cs
- AssemblyContextControlItem.cs
- Size3D.cs
- DesignerDataTableBase.cs
- ISFClipboardData.cs
- XmlSchemaChoice.cs
- WebPartDisplayModeCollection.cs
- ExpressionBuilder.cs
- LocatorManager.cs
- ControlCollection.cs
- SecurityPolicySection.cs
- FillBehavior.cs
- Rotation3DKeyFrameCollection.cs
- UserControlParser.cs
- SimpleTableProvider.cs
- CannotUnloadAppDomainException.cs
- InvokeWebService.cs
- SimpleModelProvider.cs
- FormsAuthenticationModule.cs
- PeerNameRegistration.cs
- TableLayoutStyle.cs
- SessionIDManager.cs
- Types.cs
- CngKeyCreationParameters.cs
- LogArchiveSnapshot.cs
- ProfessionalColorTable.cs
- WS2007HttpBindingCollectionElement.cs
- PresentationAppDomainManager.cs
- StringUtil.cs
- TimeSpanSecondsConverter.cs
- XmlElementAttributes.cs
- SecurityHeaderLayout.cs
- AmbientValueAttribute.cs
- TrustManagerMoreInformation.cs
- BinaryConverter.cs
- MessageSmuggler.cs
- SpecialNameAttribute.cs
- WebPartZoneBase.cs
- HotCommands.cs
- DuplexSecurityProtocolFactory.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- unitconverter.cs
- Model3D.cs
- OperandQuery.cs
- HttpServerVarsCollection.cs
- DataServiceConfiguration.cs
- InternalDuplexChannelListener.cs
- Compilation.cs
- HttpValueCollection.cs
- UidPropertyAttribute.cs
- RuntimeVariableList.cs
- CheckedPointers.cs
- ThreadLocal.cs
- ProfilePropertySettings.cs
- Timeline.cs
- FunctionUpdateCommand.cs
- Certificate.cs
- SQLGuidStorage.cs
- ContentControl.cs
- Parser.cs
- SystemMulticastIPAddressInformation.cs
- TypeConverterBase.cs
- ReadContentAsBinaryHelper.cs
- XMLDiffLoader.cs
- FixedSOMTable.cs
- SchemaElementDecl.cs
- Renderer.cs
- PkcsMisc.cs
- CreatingCookieEventArgs.cs
- EmbeddedMailObject.cs
- HtmlInputRadioButton.cs
- SqlNodeTypeOperators.cs
- EntityDataSourceContainerNameItem.cs
- DataGridViewColumnCollection.cs
- EventLogEntryCollection.cs
- XmlNodeChangedEventArgs.cs
- TextCharacters.cs
- SubclassTypeValidator.cs
- OleDbConnectionFactory.cs
- RijndaelManaged.cs
- OracleDataAdapter.cs
- IntegerValidatorAttribute.cs
- XpsS0ValidatingLoader.cs
- CopyOfAction.cs
- SrgsElement.cs
- PointLightBase.cs
- StandardToolWindows.cs
- SharedPersonalizationStateInfo.cs
- UnitySerializationHolder.cs