Beispiel #1
0
 public void TxAbort()
 {
     try
     {
         DSTMLib.TxAbort();
         _padints.Clear();
     }
     catch (TxException e)
     {
         _logDelegate(e.Message);
     }
 }
Beispiel #2
0
        static void teste2()
        {
            string args = Console.ReadLine();

            bool   res = false;
            PADInt pi_a, pi_b;

            DSTMLib.Init();

            // Create 2 PADInts
            if ((args.Length > 0) && (args.Equals("C")))
            {
                try
                {
                    res  = DSTMLib.TxBegin();
                    pi_a = DSTMLib.CreatePADInt(1);
                    pi_b = DSTMLib.CreatePADInt(2000000000);
                    Console.WriteLine("####################################################################");
                    Console.WriteLine("BEFORE create commit. Press enter for commit.");
                    Console.WriteLine("####################################################################");
                    DSTMLib.Status();
                    Console.ReadLine();
                    res = DSTMLib.TxCommit();
                    Console.WriteLine("####################################################################");
                    Console.WriteLine("AFTER create commit returned " + res + " . Press enter for next transaction.");
                    Console.WriteLine("####################################################################");
                    Console.ReadLine();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception: " + e.Message);
                    Console.WriteLine("####################################################################");
                    Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for next transaction.");
                    Console.WriteLine("####################################################################");
                    Console.ReadLine();
                    DSTMLib.TxAbort();
                }
            }

            try
            {
                res  = DSTMLib.TxBegin();
                pi_a = DSTMLib.AccessPADInt(1);
                pi_b = DSTMLib.AccessPADInt(2000000000);
                Console.WriteLine("####################################################################");
                Console.WriteLine("Status after AccessPADInt");
                Console.WriteLine("####################################################################");
                DSTMLib.Status();
                if ((args.Length > 0) && ((args.Equals("C")) || (args.Equals("A"))))
                {
                    pi_a.Write(11);
                    pi_b.Write(12);
                }
                else
                {
                    pi_a.Write(21);
                    pi_b.Write(22);
                }
                Console.WriteLine("####################################################################");
                Console.WriteLine("Status after write. Press enter for read.");
                Console.WriteLine("####################################################################");
                DSTMLib.Status();
                Console.WriteLine("1 = " + pi_a.Read());
                Console.WriteLine("2000000000 = " + pi_b.Read());
                Console.WriteLine("####################################################################");
                Console.WriteLine("Status after read. Press enter for commit.");
                Console.WriteLine("####################################################################");
                DSTMLib.Status();
                Console.ReadLine();
                res = DSTMLib.TxCommit();
                Console.WriteLine("####################################################################");
                Console.WriteLine("Status after commit. commit = " + res + "Press enter for verification transaction.");
                Console.WriteLine("####################################################################");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
                Console.WriteLine("####################################################################");
                Console.WriteLine("AFTER r/w ABORT. Commit returned " + res + " . Press enter for abort and next transaction.");
                Console.WriteLine("####################################################################");
                Console.ReadLine();
                DSTMLib.TxAbort();
            }

            try
            {
                res = DSTMLib.TxBegin();
                PADInt pi_c = DSTMLib.AccessPADInt(1);
                PADInt pi_d = DSTMLib.AccessPADInt(2000000000);
                Console.WriteLine("####################################################################");
                Console.WriteLine("1 = " + pi_c.Read());
                Console.WriteLine("2000000000 = " + pi_d.Read());
                Console.WriteLine("Status after verification read. Press enter for commit and exit.");
                Console.WriteLine("####################################################################");
                DSTMLib.Status();
                Console.ReadLine();
                res = DSTMLib.TxCommit();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
                Console.WriteLine("####################################################################");
                Console.WriteLine("AFTER verification ABORT. Commit returned " + res + " . Press enter for abort and exit.");
                Console.WriteLine("####################################################################");
                Console.ReadLine();
                DSTMLib.TxAbort();
            }
        }
Beispiel #3
0
        static void Cicle()
        {
            string args = Console.ReadLine();
            bool   res = false;
            int    aborted = 0, committed = 0;

            DSTMLib.Init();
            try
            {
                if ((args.Length > 0) && (args.Equals("C")))
                {
                    res = DSTMLib.TxBegin();
                    PADInt pi_a = DSTMLib.CreatePADInt(2);
                    PADInt pi_b = DSTMLib.CreatePADInt(2000000001);
                    PADInt pi_c = DSTMLib.CreatePADInt(1000000000);
                    pi_a.Write(0);
                    pi_b.Write(0);
                    res = DSTMLib.TxCommit();
                }
                Console.WriteLine("####################################################################");
                Console.WriteLine("Finished creating PADInts. Press enter for 300 R/W transaction cycle.");
                Console.WriteLine("####################################################################");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
                Console.WriteLine("####################################################################");
                Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction.");
                Console.WriteLine("####################################################################");
                Console.ReadLine();
                DSTMLib.TxAbort();
            }
            for (int i = 0; i < 300; i++)
            {
                try
                {
                    res = DSTMLib.TxBegin();
                    PADInt pi_d = DSTMLib.AccessPADInt(2);
                    PADInt pi_e = DSTMLib.AccessPADInt(2000000001);
                    PADInt pi_f = DSTMLib.AccessPADInt(1000000000);
                    int    d    = pi_d.Read();
                    d++;
                    pi_d.Write(d);
                    int e = pi_e.Read();
                    e++;
                    pi_e.Write(e);
                    int f = pi_f.Read();
                    f++;
                    pi_f.Write(f);
                    Console.Write(".");
                    res = DSTMLib.TxCommit();
                    if (res)
                    {
                        committed++; Console.Write(".");
                    }
                    else
                    {
                        aborted++;
                        Console.WriteLine("$$$$$$$$$$$$$$ ABORT $$$$$$$$$$$$$$$$$");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception: " + e.Message);
                    Console.WriteLine("####################################################################");
                    Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction.");
                    Console.WriteLine("####################################################################");
                    Console.ReadLine();
                    DSTMLib.TxAbort();
                    aborted++;
                }
            }
            Console.WriteLine("####################################################################");
            Console.WriteLine("committed = " + committed + " ; aborted = " + aborted);
            Console.WriteLine("Status after cycle. Press enter for verification transaction.");
            Console.WriteLine("####################################################################");
            DSTMLib.Status();
            Console.ReadLine();

            try
            {
                res = DSTMLib.TxBegin();
                PADInt pi_g = DSTMLib.AccessPADInt(2);
                PADInt pi_h = DSTMLib.AccessPADInt(2000000001);
                PADInt pi_j = DSTMLib.AccessPADInt(1000000000);
                int    g    = pi_g.Read();
                int    h    = pi_h.Read();
                int    j    = pi_j.Read();
                res = DSTMLib.TxCommit();
                Console.WriteLine("####################################################################");
                Console.WriteLine("2 = " + g);
                Console.WriteLine("2000000001 = " + h);
                Console.WriteLine("1000000000 = " + j);
                Console.WriteLine("Status post verification transaction. Press enter for exit.");
                Console.WriteLine("####################################################################");
                DSTMLib.Status();
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
                Console.WriteLine("####################################################################");
                Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction.");
                Console.WriteLine("####################################################################");
                Console.ReadLine();
                DSTMLib.TxAbort();
            }
        }