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
- StatusStrip.cs
- RemoteWebConfigurationHostStream.cs
- NamespaceCollection.cs
- BitmapEffect.cs
- FixedSOMLineCollection.cs
- AuthenticationManager.cs
- DataContract.cs
- XmlAttribute.cs
- XmlAttributeAttribute.cs
- ObjectIDGenerator.cs
- SymbolType.cs
- SiteMapSection.cs
- GPPOINT.cs
- CheckBoxAutomationPeer.cs
- ContextMenuStripActionList.cs
- CodeRegionDirective.cs
- GeneralTransform2DTo3DTo2D.cs
- PropertyChangedEventManager.cs
- figurelength.cs
- LocalizableResourceBuilder.cs
- XamlReader.cs
- DynamicResourceExtensionConverter.cs
- TransformationRules.cs
- PluralizationServiceUtil.cs
- ArrangedElementCollection.cs
- XmlSchemaSearchPattern.cs
- MsmqIntegrationProcessProtocolHandler.cs
- SerializerWriterEventHandlers.cs
- HttpWebRequest.cs
- ScriptResourceAttribute.cs
- XmlSchemaAny.cs
- GeometryDrawing.cs
- SelfIssuedSamlTokenFactory.cs
- DependencyPropertyValueSerializer.cs
- Grammar.cs
- StringKeyFrameCollection.cs
- sqlser.cs
- DbParameterHelper.cs
- _emptywebproxy.cs
- DbConnectionPoolCounters.cs
- XmlSchemaSimpleContentRestriction.cs
- EntityDesignerUtils.cs
- LocatorBase.cs
- WriteableBitmap.cs
- ParameterBuilder.cs
- XmlObjectSerializerReadContextComplexJson.cs
- SchemaLookupTable.cs
- PropertyItemInternal.cs
- EnumValAlphaComparer.cs
- _ContextAwareResult.cs
- DisposableCollectionWrapper.cs
- Visual3DCollection.cs
- ChannelDispatcherBase.cs
- CustomAttributeBuilder.cs
- FrugalList.cs
- ColumnMapVisitor.cs
- SchemaTableColumn.cs
- ObjectTag.cs
- ListViewItemSelectionChangedEvent.cs
- ZipArchive.cs
- GeometryModel3D.cs
- WebServiceErrorEvent.cs
- UITypeEditor.cs
- RelativeSource.cs
- DataKeyCollection.cs
- XmlCharCheckingWriter.cs
- XmlNotation.cs
- TrustManager.cs
- SqlCacheDependencySection.cs
- DbConvert.cs
- HtmlTable.cs
- DirectionalLight.cs
- CharacterBuffer.cs
- EmbeddedObject.cs
- AutomationElementCollection.cs
- RuleProcessor.cs
- HandlerWithFactory.cs
- DataBindingCollection.cs
- IdentityValidationException.cs
- TemplateBindingExpression.cs
- _ScatterGatherBuffers.cs
- IncrementalReadDecoders.cs
- PackageProperties.cs
- RepeatButton.cs
- TimeSpan.cs
- ViewBox.cs
- TableDetailsRow.cs
- WhitespaceRuleLookup.cs
- ProcessThread.cs
- SymmetricAlgorithm.cs
- ErrorWebPart.cs
- Matrix3D.cs
- QueryableFilterUserControl.cs
- CodeTypeOfExpression.cs
- InputGestureCollection.cs
- DeviceSpecific.cs
- RoleManagerEventArgs.cs
- sqlcontext.cs
- CodeIterationStatement.cs
- Button.cs