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
- ObjectDataSourceStatusEventArgs.cs
- NetStream.cs
- TreeViewImageIndexConverter.cs
- WindowsScrollBar.cs
- ProcessInputEventArgs.cs
- ExpressionLexer.cs
- StateMachine.cs
- DataFieldConverter.cs
- DataGridViewHeaderCell.cs
- _AutoWebProxyScriptEngine.cs
- UserNamePasswordValidationMode.cs
- TextServicesCompartmentContext.cs
- XmlSerializerAssemblyAttribute.cs
- DelegateTypeInfo.cs
- WeakReference.cs
- InfoCardCryptoHelper.cs
- WorkflowWebHostingModule.cs
- XPathEmptyIterator.cs
- ZeroOpNode.cs
- SqlMethodTransformer.cs
- SpecularMaterial.cs
- DeviceSpecific.cs
- Int16KeyFrameCollection.cs
- BigInt.cs
- GeometryConverter.cs
- ServiceSettingsResponseInfo.cs
- CacheRequest.cs
- OutputCacheProfileCollection.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- PersianCalendar.cs
- XmlSchemaInferenceException.cs
- DataSpaceManager.cs
- KeyboardDevice.cs
- WebServiceReceiveDesigner.cs
- XmlReflectionMember.cs
- AppDomain.cs
- FormsAuthenticationUser.cs
- CapabilitiesPattern.cs
- TextShapeableCharacters.cs
- DirectoryObjectSecurity.cs
- MasterPageCodeDomTreeGenerator.cs
- RC2CryptoServiceProvider.cs
- FileInfo.cs
- PageAsyncTaskManager.cs
- QueryOutputWriter.cs
- CustomLineCap.cs
- WindowsAuthenticationModule.cs
- XmlILConstructAnalyzer.cs
- CurrencyManager.cs
- ListViewTableCell.cs
- Lookup.cs
- WebBrowserContainer.cs
- AnnotationAuthorChangedEventArgs.cs
- XmlLanguage.cs
- CellTreeNodeVisitors.cs
- TraversalRequest.cs
- querybuilder.cs
- XmlDataSourceView.cs
- RowUpdatingEventArgs.cs
- DataRecordInfo.cs
- TabPage.cs
- SecurityTokenProvider.cs
- HostSecurityManager.cs
- HandlerBase.cs
- RoleManagerSection.cs
- EntityViewGenerationAttribute.cs
- DataBoundControl.cs
- ByeOperationAsyncResult.cs
- XmlMembersMapping.cs
- TextUtf8RawTextWriter.cs
- RoutedEventArgs.cs
- XmlSchemaGroup.cs
- NullableDecimalSumAggregationOperator.cs
- ScriptControl.cs
- StaticSiteMapProvider.cs
- RemoteWebConfigurationHost.cs
- CacheMode.cs
- ExtenderControl.cs
- returneventsaver.cs
- XmlLanguageConverter.cs
- TextSelection.cs
- ConfigurationSectionGroupCollection.cs
- CompiledQuery.cs
- FormViewDeletedEventArgs.cs
- BaseCollection.cs
- UriTemplateCompoundPathSegment.cs
- ErrorTableItemStyle.cs
- StrongNameMembershipCondition.cs
- EmptyQuery.cs
- XPathSelectionIterator.cs
- HttpHandlersInstallComponent.cs
- ServiceEndpointCollection.cs
- MouseGesture.cs
- QueryRelOp.cs
- ProcessThreadCollection.cs
- MyContact.cs
- ToolStripSeparatorRenderEventArgs.cs
- DescendantOverDescendantQuery.cs
- ApplicationContext.cs
- NavigationPropertyAccessor.cs