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
- UIElement3D.cs
- AutomationPattern.cs
- CollectionEditor.cs
- Permission.cs
- DesignerForm.cs
- CaseExpr.cs
- remotingproxy.cs
- XmlDeclaration.cs
- ProcessHostConfigUtils.cs
- CalendarDateRangeChangingEventArgs.cs
- SessionStateModule.cs
- GridViewColumnCollectionChangedEventArgs.cs
- IndentedWriter.cs
- NameValueSectionHandler.cs
- ProfileSettingsCollection.cs
- SchemaImporterExtensionElementCollection.cs
- MouseEvent.cs
- PenContexts.cs
- ImageListStreamer.cs
- CqlWriter.cs
- SqlCacheDependencyDatabaseCollection.cs
- ArrayElementGridEntry.cs
- SafeTokenHandle.cs
- RowParagraph.cs
- DataGrid.cs
- DefaultPropertiesToSend.cs
- ByteStream.cs
- SID.cs
- XmlDataSourceView.cs
- MappingItemCollection.cs
- XmlSchema.cs
- Stackframe.cs
- ForwardPositionQuery.cs
- HandlerBase.cs
- SafeNativeMethodsMilCoreApi.cs
- TreeView.cs
- GatewayDefinition.cs
- LinqDataSourceContextData.cs
- TaiwanLunisolarCalendar.cs
- SharedDp.cs
- ServiceInfoCollection.cs
- Menu.cs
- GroupByExpressionRewriter.cs
- GridViewSortEventArgs.cs
- StrokeCollectionDefaultValueFactory.cs
- CallContext.cs
- CodeExporter.cs
- DeferredReference.cs
- LineServicesRun.cs
- LogLogRecordHeader.cs
- HostedTransportConfigurationManager.cs
- smtppermission.cs
- ServiceBuildProvider.cs
- ValidatingReaderNodeData.cs
- OptimalBreakSession.cs
- SudsParser.cs
- ProxyHelper.cs
- XamlReaderHelper.cs
- ExecutionEngineException.cs
- SortDescription.cs
- BitmapEffectInputData.cs
- DefinitionBase.cs
- SystemUnicastIPAddressInformation.cs
- TranslateTransform3D.cs
- MultipleViewPattern.cs
- CryptographicAttribute.cs
- _LocalDataStoreMgr.cs
- StrongNameIdentityPermission.cs
- DefaultExpression.cs
- XmlNamespaceMapping.cs
- MailMessageEventArgs.cs
- OrderPreservingPipeliningMergeHelper.cs
- AssemblyNameProxy.cs
- ResXResourceSet.cs
- IndexedWhereQueryOperator.cs
- NavigationService.cs
- ParenExpr.cs
- SelectedPathEditor.cs
- SettingsPropertyWrongTypeException.cs
- ComplexType.cs
- XmlReflectionMember.cs
- WindowsToolbar.cs
- DataServiceProcessingPipelineEventArgs.cs
- Message.cs
- StreamInfo.cs
- HitTestFilterBehavior.cs
- ZipIOLocalFileHeader.cs
- ThreadSafeList.cs
- Interlocked.cs
- StylusPointProperties.cs
- SafeNativeMethods.cs
- RemotingAttributes.cs
- DbConnectionHelper.cs
- StringBlob.cs
- ServiceReflector.cs
- SqlDuplicator.cs
- Accessors.cs
- TcpClientCredentialType.cs
- GcSettings.cs
- FixedBufferAttribute.cs