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(); } }
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); }
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; }