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
- AnnotationAdorner.cs
- PermissionListSet.cs
- CounterSample.cs
- CacheHelper.cs
- Normalizer.cs
- ValueExpressions.cs
- Transform3DGroup.cs
- ActivityXRefPropertyEditor.cs
- ExpressionHelper.cs
- CodeConditionStatement.cs
- ISO2022Encoding.cs
- IIS7UserPrincipal.cs
- IODescriptionAttribute.cs
- Model3DCollection.cs
- XmlNamespaceDeclarationsAttribute.cs
- ProcessRequestArgs.cs
- WindowsUpDown.cs
- ColumnBinding.cs
- WindowsSysHeader.cs
- DesignTimeParseData.cs
- SimpleHandlerBuildProvider.cs
- InvalidateEvent.cs
- WebZone.cs
- RootProfilePropertySettingsCollection.cs
- Trace.cs
- StringKeyFrameCollection.cs
- PolicyChain.cs
- DataPagerFieldItem.cs
- SqlMethodCallConverter.cs
- XmlComment.cs
- DetailsViewInsertedEventArgs.cs
- CompilationAssemblyInstallComponent.cs
- HeaderedItemsControl.cs
- DataTableNewRowEvent.cs
- DataGridViewAutoSizeModeEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- RotateTransform3D.cs
- BitArray.cs
- CodeTypeReferenceCollection.cs
- TrackingAnnotationCollection.cs
- ExceptionValidationRule.cs
- EmptyTextWriter.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- Column.cs
- TextElementEnumerator.cs
- XmlException.cs
- ReflectionTypeLoadException.cs
- RuntimeHelpers.cs
- GlobalizationSection.cs
- ToolStripItemTextRenderEventArgs.cs
- ActivatedMessageQueue.cs
- ToolStripPanel.cs
- SortFieldComparer.cs
- FormsAuthenticationModule.cs
- Window.cs
- StrongNameKeyPair.cs
- ReadOnlyCollection.cs
- Symbol.cs
- HelpInfo.cs
- XmlSerializationReader.cs
- TypeConverterValueSerializer.cs
- DesignerValidatorAdapter.cs
- CodeCommentStatementCollection.cs
- PhysicalFontFamily.cs
- DataObject.cs
- SyncOperationState.cs
- ConnectionInterfaceCollection.cs
- SqlXmlStorage.cs
- BaseDataListActionList.cs
- AvTrace.cs
- XmlDocumentSerializer.cs
- SqlEnums.cs
- NodeFunctions.cs
- Attributes.cs
- TextServicesCompartmentEventSink.cs
- CaseCqlBlock.cs
- TreeNodeBinding.cs
- RichTextBoxAutomationPeer.cs
- DirtyTextRange.cs
- SqlWebEventProvider.cs
- StylusShape.cs
- ManipulationVelocities.cs
- Missing.cs
- DebugManager.cs
- PrinterResolution.cs
- ComPlusDiagnosticTraceSchemas.cs
- cryptoapiTransform.cs
- FactoryGenerator.cs
- InvokeAction.cs
- XmlRootAttribute.cs
- Byte.cs
- ExecutionScope.cs
- DateTimeSerializationSection.cs
- UrlAuthFailedErrorFormatter.cs
- _BaseOverlappedAsyncResult.cs
- EntityContainerAssociationSet.cs
- ObjectStorage.cs
- CompiledQueryCacheEntry.cs
- DataGridViewColumnEventArgs.cs
- ItemType.cs