public Action define_server_receiveaction(Receiver rcvr, Sender sndr, bool log_messages) { HiResTimer hTimer = new HiResTimer(); DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); Action serviceAction = () => { Message msg = new Message(); DBProcessor db_process = new DBProcessor(); while (true) { msg = rcvr.getMessage(); // note use of non-service method to deQ messages if (msg.content == "connection start message" || msg.content == "done" || msg.content == "closeServer") { Console.Write("\n Received message:"); Console.Write("\n Sender is {0}", msg.fromUrl); Console.Write("\n content is {0}\n", msg.content); } if (msg.content == "connection start message") { continue; // don't send back start message } if (msg.content == "done") { Console.Write("\n client has finished\n"); Util.swapUrls(ref msg); sndr.sendMessage(msg); continue; } if (msg.content == "closeServer") { Console.Write("received closeServer"); break; } hTimer.Start(); XElement result = db_process.process_msg <int, DBElement <int, string>, string>(msg.content, db); hTimer.Stop(); if (log_messages) { Console.WriteLine(" Time taken to process this request = {0} microseconds", hTimer.ElapsedMicroseconds); } double tm = (double)hTimer.ElapsedMicroseconds; XElement request_mesg = XElement.Parse(msg.content); XElement request_id = request_mesg.Element("Request_ID"); XElement request_time = request_mesg.Element("Request_Time_Stamp"); string method = request_mesg.Element("Request_Type").Value; send_wpf_processing(hTimer.ElapsedMicroseconds, method, sndr, port); diction[method].Add(tm); if (diction[method].Count % 10 == 0) { send_wpf_average(method, sndr, port); } XElement response_server = new XElement("Response_Message"); response_server.Add(request_id); response_server.Add(request_time); response_server.Add(result); msg.content = response_server.ToString(); Util.swapUrls(ref msg); sndr.sendMessage(msg); } }; return(serviceAction); }
static void Main(string[] args) { DBProcessor db_process = new DBProcessor(); DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); /* * for (int i=0;i<100;i++) * { * // int tm = DateTime.Now * Thread.Sleep(1100); * Console.WriteLine("tm = {0}", DateTime.Now); * Console.WriteLine("tm1 = {0}", DateTime.Now.ToString("M / dd / yyyy h: mm:ss.fff tt")); * //DateTime.Parse * lkfs * }*/ string tm1 = DateTime.Now.ToString("M / dd / yyyy h: mm:ss.fff tt"); Thread.Sleep(150); string tm2 = DateTime.Now.ToString("M / dd / yyyy h: mm:ss.fff tt"); DateTime tma = DateTime.Parse(tm1); DateTime tmb = DateTime.Parse(tm2); TimeSpan ts = tmb - tma; long ts_tick = ts.Ticks; Console.WriteLine("tm1 = {0}\ntm2 = {1}", tm1, tm2); Console.WriteLine("ts = {0}\nts_tick = {1}", ts, ts.TotalMilliseconds); DateTime tm1_t = DateTime.Now; Thread.Sleep(160); DateTime tm2_t = DateTime.Now; TimeSpan a = tm2_t - tm1_t; long ms = a.Ticks; Console.WriteLine("tm1 = {0}\ntm2 = {1}", tm1_t, tm2_t); Console.WriteLine("a = {0}\nms = {1}", a, (tm2_t - tm1_t).TotalMilliseconds); //------<Test inserting Element into database >---------- XElement request_msg = new XElement("Request_Message"); XElement req_type = new XElement("Request_Type", "Insert"); XElement key = new XElement("Key", 45); // XElement name = new XElement("Name", "element_one"); XElement descr = new XElement("Description", "Descr of element_one"); XElement children = new XElement("Children"); XElement k1 = new XElement("Key", 55); XElement k2 = new XElement("Key", 65); children.Add(k1); children.Add(k2); XElement payload = new XElement("Payload", "This the payload of element one."); request_msg.Add(req_type); request_msg.Add(key); //request_msg.Add(name); request_msg.Add(descr); request_msg.Add(children); request_msg.Add(payload); string msg_content = request_msg.ToString(); Console.WriteLine("Going to call show db:"); db.showDB(); Console.WriteLine("Going to to call process query with xml = \n{0}", request_msg.ToString()); // string reply = db_process.process_msg<int, DBElement<int, string>, string>(msg_content, db); // Console.WriteLine("Reply from processing = {0}", reply); db.showDB(); XElement req_msg3 = new XElement("Request_Message"); XElement req_type3 = new XElement("Request_Type", "Edit Name"); XElement req_elem = new XElement("Key", 45); XElement new_name = new XElement("Name", "This is new name for element."); req_msg3.Add(req_type3); req_msg3.Add(req_elem); req_msg3.Add(new_name); Console.WriteLine("Going to to call process query with xml = \n{0}", req_msg3.ToString()); // string reply3 = db_process.process_msg<int, DBElement<int, string>, string>(req_msg3.ToString(),db); db.showDB(); XElement req_msg4 = new XElement("Request_Message"); XElement req_type4 = new XElement("Request_Type", "Edit Description"); XElement req_key = new XElement("Key", 45); XElement new_descr = new XElement("Description", "New decription for element."); req_msg4.Add(req_type4); req_msg4.Add(req_key); req_msg4.Add(new_descr); Console.WriteLine("Going to to call process query with xml = \n{0}", req_msg4.ToString()); // string reply4 = db_process.process_msg<int, DBElement<int, string>, string>(req_msg4.ToString(), db); db.showDB(); Console.WriteLine("Testing XML"); XElement rep = new XElement("Reply_msg"); XElement result = new XElement("Result", "Success"); XElement query = new XElement("Query"); XElement qres = new XElement("Type", "File Name"); rep.Add(qres); if (rep.Element("Result") == null) { Console.Write("Hello"); } }