public EnlistDurable ( Guid resourceManagerIdentifier, IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions ) : |
||
resourceManagerIdentifier | Guid | |
enlistmentNotification | IEnlistmentNotification | |
enlistmentOptions | EnlistmentOptions | |
Результат |
public void Enlist(Transaction tx) { tx.EnlistDurable(_transactionExecutionEnvironment.ResourceManagerId, this, EnlistmentOptions.None); }
public void Enlist(Transaction tx) { tx.EnlistDurable(TransactionResourceId, this, EnlistmentOptions.None); }
public override void EnlistTransaction(Transaction systemTransaction) { lock (m_syncRoot) { CheckClosed(); if (systemTransaction == null) { throw new ArgumentNullException("transaction"); } HsqlEnlistment enlistment = m_enlistment; if (enlistment == null) { enlistment = new HsqlEnlistment(this, systemTransaction); if (!systemTransaction.EnlistPromotableSinglePhase(enlistment)) { if (m_transaction == null) { BeginTransaction(HsqlConvert.ToIsolationLevel(systemTransaction.IsolationLevel)); } enlistment.m_dbTransaction = m_transaction; systemTransaction.EnlistDurable(enlistment.Rmid, enlistment, EnlistmentOptions.None); } m_enlistment = enlistment; GC.KeepAlive(this); } else if (enlistment.Transaction != systemTransaction) { throw new InvalidOperationException( "Connection currently has transaction enlisted." + " Finish current transaction and retry."); // NOI18N } } }
public Transaction Enlist(Transaction tx) { tx.EnlistDurable(rmGuid, this, EnlistmentOptions.None); return tx; }
public void Begin(Transaction transaction) { lock (syncObject) { this.netTxState = TxState.Active; dtcControlEvent.Reset(); Tracer.Debug("Begin notification received"); if (InNetTransaction) { throw new TransactionInProgressException("A Transaction is already in Progress"); } try { Guid rmId = ResourceManagerGuid; // Enlist this object in the transaction. this.currentEnlistment = transaction.EnlistDurable(rmId, this, EnlistmentOptions.None); Tracer.Debug("Enlisted in Durable Transaction with RM Id: " + rmId); TransactionInformation txInfo = transaction.TransactionInformation; XATransactionId xaId = new XATransactionId(); this.transactionId = xaId; if (txInfo.DistributedIdentifier != Guid.Empty) { xaId.GlobalTransactionId = txInfo.DistributedIdentifier.ToByteArray(); xaId.BranchQualifier = Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()); } else { xaId.GlobalTransactionId = Encoding.UTF8.GetBytes(txInfo.LocalIdentifier); xaId.BranchQualifier = Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()); } // Now notify the broker that a new XA'ish transaction has started. TransactionInfo info = new TransactionInfo(); info.ConnectionId = this.connection.ConnectionId; info.TransactionId = this.transactionId; info.Type = (int) TransactionType.Begin; this.session.Connection.Oneway(info); if (Tracer.IsDebugEnabled) { Tracer.Debug("Began XA'ish Transaction:" + xaId.GlobalTransactionId.ToString()); } } catch (Exception) { dtcControlEvent.Set(); throw; } } }