| File: System\Transactions\DtcProxyShim\TransactionNotifyShim.cs | Web Access |
| Project: src\runtime\src\libraries\System.Transactions.Local\src\System.Transactions.Local.csproj (System.Transactions.Local) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Transactions.DtcProxyShim.DtcInterfaces; namespace System.Transactions.DtcProxyShim; internal sealed class TransactionNotifyShim : NotificationShimBase, ITransactionOutcomeEvents { internal TransactionNotifyShim(DtcProxyShimFactory shimFactory, object? enlistmentIdentifier) : base(shimFactory, enlistmentIdentifier) { } public void Committed(bool fRetaining, IntPtr pNewUOW, int hresult) { NotificationType = ShimNotificationType.CommittedNotify; ShimFactory.NewNotification(this); } public void Aborted(IntPtr pboidReason, bool fRetaining, IntPtr pNewUOW, int hresult) { NotificationType = ShimNotificationType.AbortedNotify; ShimFactory.NewNotification(this); } public void HeuristicDecision(OletxTransactionHeuristic dwDecision, IntPtr pboidReason, int hresult) { NotificationType = dwDecision switch { OletxTransactionHeuristic.XACTHEURISTIC_ABORT => ShimNotificationType.AbortedNotify, OletxTransactionHeuristic.XACTHEURISTIC_COMMIT => ShimNotificationType.CommittedNotify, _ => ShimNotificationType.InDoubtNotify }; ShimFactory.NewNotification(this); } public void Indoubt() { NotificationType = ShimNotificationType.InDoubtNotify; ShimFactory.NewNotification(this); } }