예제 #1
0
 internal void CloseTransaction(TccTransaction <TContext> trans)
 {
     _counter.ActiveTransaction.Decrement();
     lock (_syncRoot) {
         _activeTrans.Remove(trans.TxId);
     }
     if (_persister != null)
     {
         try
         {
             _persister.CloseTransaction(trans.GetData());
         }
         catch (Exception ex)
         {
             _tracing.ErrorFmt(ex, "Tcc Persister Failed");
         }
     }
 }
예제 #2
0
        internal void NewTransaction(TccTransaction <TContext> trans)
        {
            _counter.ActiveTransaction.Increment();
            _counter.TransOpenPerSec.Increment();

            lock (_syncRoot) {
                _activeTrans.Add(trans.TxId, trans);
            }


            if (_persister != null)
            {
                try
                {
                    _persister.NewTransaction(trans.GetData());
                }
                catch (Exception ex)
                {
                    _tracing.ErrorFmt(ex, "Tcc Persister Failed");
                }
            }
        }
예제 #3
0
        internal void UpdateTransaction(TccTransaction <TContext> trans)
        {
            TccTransaction <TContext> tx;

            lock (_syncRoot) {
                if (!_activeTrans.TryGetValue(trans.TxId, out tx))
                {
                    // 报错
                    throw new Exception("Tansaction not in ActiveTrans");
                }
            }

            if (_persister != null)
            {
                try
                {
                    _persister.UpdateTransaction(trans.GetData());
                }
                catch (Exception ex)
                {
                    _tracing.ErrorFmt(ex, "Tcc Persister Failed");
                }
            }
        }
예제 #4
0
 internal TccTransactionContext(TccTransaction <TContext> trans, Action <TccTransactionContext <TContext> > callback)
 {
     _trans       = trans;
     _callback    = callback;
     _hasReturned = 0;
 }
예제 #5
0
 public TccTransactionException(TccTransaction <TContext> trans, string message, Exception ex)
     : base(message)
 {
     Transaction = trans;
     Error       = ex;
 }