public VirtualRobot(int port, ConcurrentQueue <DBQueueObject> VCQueue, HttpServer server, string BPAPrefix, InfluxSender influxSender) { this.port = port; this.id = Guid.NewGuid().ToString(); this.token = null; this.VCQueue = VCQueue; this.server = server; this.UseBPAQueue = false; this.dbready = false; this.influxSender = influxSender; this.BPAPrefix = BPAPrefix; DBQueueObject DBQueueObject = new DBQueueObject(this); //DBQueueObject.needupdate = true; DBQueueObject.Query = DBQueries.UpdateBPAResource(port, 2, 0, BPAPrefix); VCQueue.Enqueue(DBQueueObject); // this.DBQueueObject = new DBQueueObject(this); // this.DBQueueObject.needupdate = true; // VCQueue.Enqueue(DBQueries.CreateBPAResource(id, port)); Console.WriteLine("VirtualRobot created on " + port); }
public void Start(ConcurrentQueue <DBQueueObject> VCQueue, int duration, bool UseBPAQueue, string bpaqueuename, string tag) { // this.duration = duration; if (!(this is null) && this.status != 1) { Random Random = new Random(); double SleepTime = duration * 0.9 + duration * (Random.NextDouble() * 0.2); SleepTime = SleepTime * 1000; // this.finishTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + (int)(SleepTime * 0.001); status = 1; DBQueueObject DBQueueObject; if (UseBPAQueue) { // Thread.Sleep(1); DBQueueObject = new DBQueueObject(VR); DBQueueObject.needupdate = true; DBQueueObject.Query = DBQueries.InsertBPACaseLock(VR.VS.id, bpaqueuename, tag) + ";" + DBQueries.UpdateBPAResource(port, 1, 1, VR.BPAPrefix) + "; " + DBQueries.UpdateSession(id, status);; VCQueue.Enqueue(DBQueueObject); } else { DBQueueObject = new DBQueueObject(VR); DBQueueObject.needupdate = true; DBQueueObject.Query = DBQueries.UpdateBPAResource(port, 1, 1, VR.BPAPrefix) + "; " + DBQueries.UpdateSession(id, status);; VCQueue.Enqueue(DBQueueObject); } Thread sleep = new Thread(() => { Thread.Sleep(Convert.ToInt32(SleepTime)); status = 2; Console.WriteLine("Sleeptime = " + SleepTime); if (!(VR is null)) { try { DBQueueObject = new DBQueueObject(VR); if (UseBPAQueue) { DBQueueObject.Query = DBQueries.UpdateBPAResource(port, 2, 0, VR.BPAPrefix) + "; " + DBQueries.UpdateSessionEndTime(id, status) + "; " + DBQueries.BPAWorkQueueItem(id, bpaqueuename, tag) + " ; " + DBQueries.DeleteFromBPACaseLock(VR.VS.id); ; VCQueue.Enqueue(DBQueueObject); } else { DBQueueObject.Query = DBQueries.UpdateBPAResource(port, 2, 0, VR.BPAPrefix) + "; " + DBQueries.UpdateSessionEndTime(id, status); VCQueue.Enqueue(DBQueueObject); } } catch (Exception e) { Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine("Session Start Error:"); if (DBQueueObject.Query is null) { Console.WriteLine("\nDBQueueObjectQuery is null"); } else { Console.WriteLine("\nDBQueueObject.Query: " + DBQueueObject.Query); } if (DBQueueObject.VR is null) { Console.WriteLine("\nDBQueueObjectVR is null"); } else { Console.WriteLine("\nDBQueueObject.VR: " + DBQueueObject.VR.id); } if (tag is null) { Console.WriteLine("\ntag is null"); } else { Console.WriteLine("tag =" + tag); } Console.WriteLine(e); } } }); sleep.Start(); } }