File: System\ServiceModel\TransactionProtocol.cs
Web Access
Project: ..\..\..\src\System.ServiceModel.Primitives\src\System.ServiceModel.Primitives.csproj (System.ServiceModel.Primitives)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
namespace System.ServiceModel
{
    public abstract class TransactionProtocol
    {
        public static TransactionProtocol Default
        {
            get { return OleTransactions; }
        }
 
        public static TransactionProtocol OleTransactions
        {
            get { return OleTransactionsProtocol.Instance; }
        }
 
        public static TransactionProtocol WSAtomicTransactionOctober2004
        {
            get { return WSAtomicTransactionOctober2004Protocol.Instance; }
        }
 
        public static TransactionProtocol WSAtomicTransaction11
        {
            get { return WSAtomicTransaction11Protocol.Instance; }
        }
 
        internal abstract string Name { get; }
 
        internal static bool IsDefined(TransactionProtocol transactionProtocol)
        {
            return transactionProtocol == OleTransactions ||
                   transactionProtocol == WSAtomicTransactionOctober2004 ||
                   transactionProtocol == WSAtomicTransaction11;
        }
    }
 
    internal class OleTransactionsProtocol : TransactionProtocol
    {
        internal static TransactionProtocol Instance { get; } = new OleTransactionsProtocol();
 
        internal override string Name => "OleTransactions";
    }
 
    internal class WSAtomicTransactionOctober2004Protocol : TransactionProtocol
    {
        internal static TransactionProtocol Instance { get; } = new WSAtomicTransactionOctober2004Protocol();
 
        internal override string Name => "WSAtomicTransactionOctober2004";
    }
 
    internal class WSAtomicTransaction11Protocol : TransactionProtocol
    {
        internal static TransactionProtocol Instance { get; } = new WSAtomicTransaction11Protocol();
 
        internal override string Name => "WSAtomicTransaction11";
    }
}