Exemplo n.º 1
0
        public void UpdateTransactionState(TransactionContext tctx)
        {
            TransactionContext transactionToRemove = null;
            if (tctx.State == TransactionContext.states.commited || tctx.State == TransactionContext.states.aborted)
            {
                for (int i = 0; i < listTransactionContext.Count; i++)
                    if (tctx.Txid == listTransactionContext[i].Txid)
                        transactionToRemove = listTransactionContext[i];

                listTransactionContext.Remove(transactionToRemove);

                foreach (Node node in listOfServersStanby)
                    ctx.InsertServer(node);

                listOfServersStanby.Clear();
               }
        }
Exemplo n.º 2
0
        public Transaction()
        {
            AccessedKeys = new List<string>();
            NodesLocation = new Dictionary<string, List<Node>>();
            Nodes = new List<Node>();
            Central = (ICentralDirectory)Activator.GetObject(
              typeof(ICentralDirectory),
              "tcp://localhost:9090/CentralDirectory");
            while (true)
            {
                Tctx = Central.BeginTx();
                if (Tctx.Txid != -1)
                    break;

                Thread.Sleep(500);

            }
            Console.WriteLine(Tctx);
        }
Exemplo n.º 3
0
 public TransactionContext BeginTx()
 {
     TransactionContext tc = new TransactionContext();
     tc.State = TransactionContext.states.initiated;
     if (listOfServersStanby.Count == 0)
     {
         tc.Txid = ctx.txid;
         listTransactionContext.Add(tc);
         ctx.txid++;
     }
     else tc.Txid = -1;
     return tc;
 }