internal OletxTransactionManager(string nodeName) { lock (ClassSyncObject) { // If we have not already initialized the shim factory and started the notification // thread, do so now. if (ProxyShimFactory == null) { ProxyShimFactory = new DtcProxyShimFactory(ShimWaitHandle); ThreadPool.UnsafeRegisterWaitForSingleObject( ShimWaitHandle, ShimNotificationCallback, null, -1, false); } } DtcTransactionManagerLock = new ReaderWriterLock(); _nodeNameField = nodeName; // The DTC proxy doesn't like an empty string for node name on 64-bit platforms when // running as WOW64. It treats any non-null node name as a "remote" node and turns off // the WOW64 bit, causing problems when reading the registry. So if we got on empty // string for the node name, just treat it as null. if (_nodeNameField is { Length : 0 })
internal NotificationShimBase(DtcProxyShimFactory shimFactory, object?enlistmentIdentifier) { ShimFactory = shimFactory; EnlistmentIdentifier = enlistmentIdentifier; NotificationType = ShimNotificationType.None; AbortingHint = false; IsSinglePhase = false; }
internal Phase0NotifyShim(DtcProxyShimFactory shimFactory, object enlistmentIdentifier) : base(shimFactory, enlistmentIdentifier) { }
internal VoterBallotShim(DtcProxyShimFactory shimFactory, VoterNotifyShim notifyShim) => _voterNotifyShim = notifyShim;
internal TransactionShim(DtcProxyShimFactory shimFactory, TransactionNotifyShim notifyShim, ITransaction transaction) { _shimFactory = shimFactory; _transactionNotifyShim = notifyShim; Transaction = transaction; }
internal ResourceManagerShim(DtcProxyShimFactory shimFactory) => _shimFactory = shimFactory;
internal ResourceManagerNotifyShim( DtcProxyShimFactory shimFactory, object enlistmentIdentifier) : base(shimFactory, enlistmentIdentifier) { }
internal DtcTransactionManager(string?nodeName, OletxTransactionManager oletxTm) { _nodeName = nodeName; _oletxTm = oletxTm; _proxyShimFactory = OletxTransactionManager.ProxyShimFactory; }
internal TransactionNotifyShim(DtcProxyShimFactory shimFactory, object?enlistmentIdentifier) : base(shimFactory, enlistmentIdentifier) { }
internal EnlistmentNotifyShim(DtcProxyShimFactory shimFactory, OletxEnlistment enlistmentIdentifier) : base(shimFactory, enlistmentIdentifier) { _ignoreSpuriousProxyNotifications = false; }