Esempio n. 1
0
        public Action define_receive_action(Receiver rcvr, bool log_messages, Sender sndr, string localport)
        {
            //Try to implement service action specific to client.
            Action client_receive_action = () =>
            {
                Message rcv_msg = null;
                while (true)
                {
                    rcv_msg = rcvr.getMessage();
                    if (rcv_msg.content == "closeReceiver")
                    {
                        break;
                    }
                    if (rcv_msg.content == "connection start message")
                    {
                        continue;
                    }
                    if (rcv_msg.content == "done")
                    {
                        Console.WriteLine("\n  ***************************************\n  All responses received from server. Going to display average results on WPF GUI.");
                        send_wpf_final(sndr, localport);
                        Console.WriteLine("  Enter any key on this window to close sender and receiver of this client.");
                        continue;
                    }
                    try
                    {
                        XElement response_msg   = XElement.Parse(rcv_msg.content);
                        XElement query_response = response_msg.Element("Query_Response");
                        Console.WriteLine("\n  Received response for Request with ID = {0} of type - {1}", response_msg.Element("Request_ID").Value, query_response.Element("Query_Type").Value);
                        DateTime tm_start = DateTime.Parse(response_msg.Element("Request_Time_Stamp").Value);
                        DateTime tm_now   = DateTime.Now;
                        TimeSpan lat_ts   = tm_now - tm_start;
                        Console.WriteLine("  Latency time for the Request = {0} milli seconds", lat_ts.TotalMilliseconds);
                        if (query_response.Element("Result").Value != "Success")
                        {
                            Console.WriteLine("  Result of request:\n  {0}", query_response.Element("Result").Value);
                        }
                        else
                        {
                            Console.WriteLine(query_response.Element("Partial").Value);
                            if (log_messages)
                            {
                                Console.WriteLine(query_response.Element("Complete").Value);
                            }
                        }
                        send_wpf_latency(lat_ts.TotalMilliseconds, query_response.Element("Query_Type").Value, sndr, localport);
                        diction[query_response.Element("Query_Type").Value].Add(lat_ts.TotalMilliseconds);
                    }
                    catch
                    {
                        Console.WriteLine("\n  XML format of response message is not in the expected format. A particular tag could not be found.");
                    }
                }
            };

            return(client_receive_action);
        }
 // Determine what happens to received messages
 public Action ServiceAction()
 {
     Action serviceAction = () =>
       {
           int count = 0;
           Stopwatch time = new Stopwatch();                  
           Message msg = null;
           time.Start();
           while (true)
           {
               if (numMsg != 0 && numMsg == count)
               {
                   time.Stop();
                   sendTimeInfo(time, count);
               }                          
               msg = rcvr.getMessage();
               if (msg.content == "connection start message")
                   continue;
               if (msg.content == "done")
                   continue;
               if (msg.content == "closeServer")
                   break;
               XDocument xml = new XDocument();
               xml = XDocument.Parse(msg.content);
               string order = xml.Descendants("Msg").ElementAt(0).Descendants("Command").ElementAt(0).Value;
               if (order == "writeClientPerf")
               {
                   numMsg += ClientPerf(msg);
                   sndr.sendMessage(msg);
                   continue;
               }
               if (order == "readClientPerf")
               {
                   numMsg += ClientPerf(msg);
                   sndr.sendMessage(msg);
                   continue;
               }
               string DBName= xml.Descendants("Msg").Descendants("DBName").ElementAt(0).Value;                                         
               string command = DBName + order;                  
               if (acts.ContainsKey(command))
               {
                   acts[command].Invoke(msg);
                   sndr.sendMessage(msg);
               }
               else
                   Write("\n command {0} {1} doesn't exist \n", order, DBName);
               ++count;
           }                  
       };
     return serviceAction;
 }
Esempio n. 3
0
        Action serviceAction()
        {
            Action ServiceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    msg = rcvr.getMessage();
                    if (msg.content == "connection start message")
                    {
                        continue;
                    }
                    if (msg.content == "done")
                    {
                        continue;
                    }
                    if (msg.content == "closeReceiver")
                    {
                        break;
                    }
                    --totalNumMsg;
                    if (totalNumMsg == 0)
                    {
                        sendTimeInfo();
                    }
                    XDocument xml = new XDocument();
                    xml = XDocument.Parse(msg.content);
                    string reply  = xml.Descendants("Msg").Descendants("Reply").ElementAt(0).Value;
                    string DBName = xml.Descendants("Msg").Descendants("DBName").ElementAt(0).Value;
                    if (acts.ContainsKey(reply))
                    {
                        Console.Write("\n\n ---{0} result in DB {1}--- ", reply, DBName);
                        Console.Write(acts[reply].Invoke(msg));
                    }
                    else
                    {
                        Console.Write("\n Invaild reply \n");
                    }
                }
            };

            return(ServiceAction);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();
            DBEngine<string, DBElement<string, List<string>>> testDict = new DBEngine<string, DBElement<string, List<string>>>();
            srvr.ProcessCommandLine(args);
            double timeTaken = 0, totalTime = 0, insCount = 0;
            srvr.printMessage(srvr);
            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));
            Receiver rcvr = new Receiver(srvr.port, srvr.address);
            StringBuilder sb = new StringBuilder();
            Action serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    HiResTimer hiResTimer = new HiResTimer();
                    hiResTimer.Start();
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages            
                    srvr.printMessage(msg);
                    if (msg.content == "connection start message") continue; // don't send back start message
                    if (msg.fromUrl == "http://localhost:8080/CommService") continue;
                    if (msg.content == "done")
                    { Console.Write("\n  client has {0} finished\n",msg.fromUrl); continue; }
                    if (msg.content == "closeServer")
                    { Console.Write("received closeServer"); break; }
                    msg.content = srvr.readOperations(testDict, msg);
                    Util.swapUrls(ref msg);                     // swap urls for outgoing message
#if (TEST_WPFCLIENT)
                    Message testMsg = new Message();
                    testMsg.toUrl = msg.toUrl;
                    testMsg.fromUrl = msg.fromUrl;
                    testMsg.content = msg.content;
                    sndr.sendMessage(testMsg);
                    hiResTimer.Stop();
                    double diffTime = hiResTimer.ElapsedTimeSpan.TotalSeconds;
                    totalTime = totalTime + diffTime;
                    timeTaken = totalTime / (++insCount);
                    Console.Title = "Server client handling " + (insCount) + " requests";
                    srvr.printServerThroughput(timeTaken);
                    sndr.sendServerThroughput((1 / timeTaken));
#else
                              sndr.sendMessage(msg);
#endif
                }
            };
            if (rcvr.StartService())
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            Util.waitForUser(); // so the call doesn't block.
        }
 //--------< Define action to be performed on receiving message >------
 private static Action doserviceAction(Receiver rcvr)
 {
   Action serviceAction = () =>
   {
     if (Util.verbose)
       Console.Write("\n  starting Receiver.defaultServiceAction");
     Message msg1 = null;
     while (true)
     {
       msg1 = rcvr.getMessage();   // note use of non-service method to deQ messages
       Console.Write("\n  Received message:");
       Console.Write("\n  sender is {0}", msg1.fromUrl);
       Console.Write("\n  content is {0}\n", msg1.content);
       if (msg1.content == "closeReceiver")
         break;
     }
   };
   return serviceAction;
 }
 //--------< Define action to be performed on receiving message >------
 private static Action doserviceAction(Receiver rcvr, Client clnt)
 {
   Action serviceAction = () =>
   {
     if (Util.verbose)
       Console.Write("\n  starting Receiver.defaultServiceAction");
     Message msg1 = null;
     while (true)
     {
       msg1 = rcvr.getMessage();   // note use of non-service method to deQ messages
       Console.Write("\n  Received message:");
       Console.Write("\n  sender is {0}", msg1.fromUrl);
       Console.Write("\n  content is {0}\n", msg1.content);
       if (msg1.content == "done")
       {
         clnt.read_client_latency.Stop();
         clnt.flag = false;
         Console.WriteLine("\n\n Read Client latency: " + clnt.read_client_latency.ElapsedMicroseconds + " microseconds\n\n");
       }
       if (msg1.content == "closeReceiver")
         break;
     }
   };
   return serviceAction;
 }
        //----< get Receiver and Sender running >----------------------------
        void setupChannel()
        {
            rcvr = new Receiver(localPort, localAddress);
              Action serviceAction = () =>
              {
            try
            {
              Message rmsg = null;
              while (true)
              {
            rmsg = rcvr.getMessage();
            Action act = () => { postRcvMsg(rmsg.content); };
            Dispatcher.Invoke(act, System.Windows.Threading.DispatcherPriority.Background);
              }
            }
            catch (Exception ex)
            {
              Action act = () => { lStat.Text = ex.Message; };
              Dispatcher.Invoke(act);
            }
              };
              if (rcvr.StartService())
              {
            rcvr.doService(serviceAction);
              }

              sndr = new wpfSender(lStat, this.Dispatcher);
        }
 void setupChannel()
 {
     try
     {
         rcvr = new Receiver(localPort, localAddress);
         Action serviceAction = () =>
         {
             try
             {
                 Message rmsg = null;
                 while (true)
                 {
                     rmsg = rcvr.getMessage();
                     Action act = () => { postRcvMsg(rmsg.content, rmsg.fromUrl); };
                     Dispatcher.Invoke(act, System.Windows.Threading.DispatcherPriority.Background);
                 }
             }
             catch (Exception ex)
             {
                 Action act = () =>
                 {
                     lblError.Content = ex.Message;
                 };
                 Dispatcher.Invoke(act);
             }
         };
         if (rcvr.StartService())
         {
             rcvr.doService(serviceAction);
         }
         TextBox lStat = new TextBox();
         sndr = new wpfSender(lStat, this.Dispatcher);
     }
     catch (CustomException wx)
     {
         Console.Write("Error in WPF client : {0}\n", wx.Message);
     }
 }
Esempio n. 9
0
 private static Action ServiceActionMake(HiResTimer hres, WriterClient clnt, Receiver rcvr)
 {
     Action serviceAction = () =>
     {
         Message msg1 = null;
         while (true)
         {
             msg1 = rcvr.getMessage();   // note use of non-service method to deQ messages                           
             if (msg1.content == "done")
             {
                 hres.Stop(); ulong lookUpTime = hres.ElapsedMicroseconds;
                 Message msg2 = new Message();
                 msg2.fromUrl = clnt.localUrl;
                 msg2.toUrl = clnt.wpfClientURL;
                 msg2.content = "LookupTime;" + lookUpTime + ";" + "CntMsg;" + (ulong)clnt.total + ";";
                 Sender wpfSender = new Sender(clnt.localUrl);
                 wpfSender.sendMessage(msg2);
                 Console.WriteLine("\n----------------------Overall Performance Statistics for Write Client-----------------------------\n");
                 Console.WriteLine("Number of messages processed is {0}", clnt.total);
                 Console.WriteLine("\nTotal Execution time for the messages to be processed at Client Side is {0} microsecs", clnt.WriteClientTime);
                 Console.WriteLine("\nAverage Execution time for the messages to be processed at Client Side is {0} microsecs", clnt.WriteClientTime / (ulong)clnt.total);
                 Console.WriteLine("\nTotal Execution time for the messages from Client-Server-Client {0} microsecs", lookUpTime);
                 Console.WriteLine("\nAverage Execution time for the messages from Client-Server-Client is {0} microsecs", lookUpTime / (ulong)clnt.total);
                 Console.WriteLine("\n----------------------Overall Performance Statistics for Write Client-----------------------------\n");
                 break;
             }
             else if (msg1.content == "connection start message")
                 Console.WriteLine("Connection start message receieved at client side");
             else
             {
                 XDocument docTemp = XDocument.Load(new StringReader(msg1.content));
                 string mid = docTemp.Descendants("OperationMessage").Elements("MessageID").Single().Value;
                 string op = docTemp.Descendants("OperationMessage").Elements("Operation").Single().Value;
                 string resp = docTemp.Descendants("OperationMessage").Elements("Response").Single().Value;
                 Console.Write("\nMessage - MessageID:{0} received at the client", mid);
                 Console.Write("\nSender:{0}", msg1.fromUrl); Console.Write("\nOperation :{0}", op);
                 Console.Write("\nResponse :{0}", resp);
                 string oldDt = docTemp.Descendants("InsertTime").Select(i => i).Single().Value.ToString();
                 long microseconds = (DateTime.Now.Ticks - long.Parse(oldDt)) / 10;
                 Console.Write("\nExecution time for message(MessageID:{1}) is {0} microseconds\n", microseconds, mid);
             }
         }
         Util.waitForUser();
     };
     return serviceAction;
 }
Esempio n. 10
0
        //----< Main method. >-----
        static void Main(string[] args)
        {
            Util.verbose    = false;
            Util.verboseApp = true;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);
            srvr.preLoadData();

            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");

            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));
            //Sender sndr = new Sender();
            Receiver rcvr = new Receiver(srvr.port, srvr.address);

            // - serviceAction defines what the server does with received messages
            // - This serviceAction just announces incoming messages and echos them
            //   back to the sender.
            // - Note that demonstrates sender routing works if you run more than
            //   one client.

            Action serviceAction = () =>
            {
                Message    msg = null;
                HiResTimer hrt = new HiResTimer();
                while (true)
                {
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    if (Util.verbose)
                    {
                        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")
                    {
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    try
                    {
                        XDocument xdoc = XDocument.Parse(msg.content);

                        string operationCalled = identifyOperation(xdoc);
                        // swap urls for outgoing message
                        if (operationCalled == "add")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("add Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processAddMessage(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "delete")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("delete Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processDeleteMessage(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }

                        else if (operationCalled == "edit")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("Edit Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processEditMessage(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }

                        else if (operationCalled == "query1")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query1 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery1Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query2")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query2 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery2Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query3")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query3 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery3Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query4")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query4 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery4Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query5")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query5 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery5Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "persist")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("persist Operation Called");
                            }
                            hrt.Start();
                            srvr.persistDatatToFile();
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            msg.content = "Persist operation performed.";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "restore")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("Restore Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processDataRestoreMessageRequest();
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                            continue;
                        }
                        else if (operationCalled == "performance")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("performance Operation Called");
                            }
                            Message msgToWpf1 = new Message();
                            msgToWpf1.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                            msgToWpf1.toUrl   = "http://localhost:8089/CommService";
                            msgToWpf1.content = srvr.createPerformanceMessageForWPF(xdoc, avgTime.ToString());
                            sndr.sendMessage(msgToWpf1);
                            continue;
                        }
                    }

                    catch (Exception e)
                    {
                        Console.WriteLine("Catch " + e.StackTrace + "\n");
                    }


#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 2; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
                    // sndr.sendMessage(msg);
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }                                  // so the call doesn't block.
            Util.waitForUser();
        }
Esempio n. 11
0
        //----< retrieve urls from the CommandLine if there are any >--------

        public Action define_receive_action(Receiver rcvr, bool log_messages)
        {
            Action client_receive_action = () =>
            {
                Message rcv_msg = null;
                while (true)
                {
                    rcv_msg = rcvr.getMessage();
                    if (rcv_msg.content == "closeReceiver")
                    {
                        break;
                    }
                    if (rcv_msg.content == "connection start message")
                    {
                        continue;
                    }
                    if (rcv_msg.content == "done")
                    {
                        Console.WriteLine("\n  ********************************\n  All responses received from server.");
                        Console.WriteLine("  Enter any key on the TestExecutive window to launch all the readers and writers.");
                        Console.WriteLine("  Enter any key on this window to close sender and receiver of this Demo Client.");
                        continue;
                    }
                    try
                    {
                        XElement response_msg = XElement.Parse(rcv_msg.content);
                        Console.WriteLine("\n  Received response for Request with ID = {0}", response_msg.Element("Request_ID").Value);
                        DateTime tm_start = DateTime.Parse(response_msg.Element("Request_Time_Stamp").Value);
                        DateTime tm_now   = DateTime.Now;
                        TimeSpan lat_ts   = tm_now - tm_start;
                        Console.WriteLine("  Latency time for the Request = {0} milli seconds", lat_ts.TotalMilliseconds);
                        if (response_msg.Element("Query_Response") != null)
                        {
                            XElement query_response = response_msg.Element("Query_Response");
                            Console.WriteLine("  Query type = {0}", query_response.Element("Query_Type").Value);
                            if (query_response.Element("Result").Value != "Success")
                            {
                                Console.WriteLine("  Result of request:\n  {0}", query_response.Element("Result").Value);
                            }
                            if (query_response.Element("Partial") != null)
                            {
                                Console.WriteLine(query_response.Element("Partial").Value);
                            }
                            if (query_response.Element("Complete") != null)
                            {
                                Console.WriteLine(query_response.Element("Complete").Value);
                            }
                        }
                        else
                        {
                            Console.WriteLine("  Result of request:\n  {0}", response_msg.Element("Result").Value);
                        }
                    }
                    catch
                    {
                        Console.WriteLine("\n  XML format of response message is not in the expected format. A particular tag could not be found.");
                    }
                }
            };

            return(client_receive_action);
        }
Esempio n. 12
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);

            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");

            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));
            //Sender sndr = new Sender();
            Receiver rcvr = new Receiver(srvr.port, srvr.address);

            // - serviceAction defines what the server does with received messages
            // - This serviceAction just announces incoming messages and echos them
            //   back to the sender.
            // - Note that demonstrates sender routing works if you run more than
            //   one client.

            Action serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    msg = rcvr.getMessage(); // note use of non-service method to deQ messages
                    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");
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    msg.content = "received " + msg.content + " from " + msg.fromUrl;

                    // swap urls for outgoing message
                    Util.swapUrls(ref msg);

#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 1000; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
                    sndr.sendMessage(msg);
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }                                  // so the call doesn't block.
            Util.waitForUser();
        }
Esempio n. 13
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);
            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");

            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));

            Receiver rcvr = new Receiver(srvr.port, srvr.address);

            // - serviceAction defines what the server does with received messages
            // - This serviceAction just announces incoming messages and echos them
            //   back to the sender.
            // - Note that demonstrates sender routing works if you run more than
            //   one client.

            Action serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    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");
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    if (msg.content.Contains("Writer"))
                    {
                        int     avg      = srvr.Ttime.Sum() / srvr.Ttime.Count();
                        string  lat      = string.Join(null, System.Text.RegularExpressions.Regex.Split(msg.content, "[^\\d]"));
                        Message msgToWpf = new Message();
                        msgToWpf.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf.content = msg.content + " microseconds for Client: " + msg.fromUrl.ToString();
                        sndr.sendMessage(msgToWpf);
                        Message msgToWpf1 = new Message();
                        msgToWpf1.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf1.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf1.content = "Server ThroughPut(Avg Time) for " + srvr.Ttime.Count().ToString() + " Write Operations = " + avg.ToString() + " microseconds";
                        sndr.sendMessage(msgToWpf1);
                        continue;
                    }
                    if (msg.content.Contains("Reader"))
                    {
                        int     avg1     = srvr.Ttime1.Sum() / srvr.Ttime1.Count();
                        string  lat      = string.Join(null, System.Text.RegularExpressions.Regex.Split(msg.content, "[^\\d]"));
                        Message msgToWpf = new Message();
                        msgToWpf.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf.content = msg.content + " microseconds for Client: " + msg.fromUrl.ToString();
                        sndr.sendMessage(msgToWpf);
                        Message msgToWpf1 = new Message();
                        msgToWpf1.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf1.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf1.content = "Server ThroughPut(Avg Time) for " + srvr.Ttime1.Count().ToString() + " Read Operations = " + avg1.ToString() + " microseconds";
                        sndr.sendMessage(msgToWpf1);
                        continue;
                    }
                    try
                    {
                        XDocument xdoc            = XDocument.Parse(msg.content);
                        string    operationCalled = getOperationType(xdoc);
                        if (operationCalled == "add")
                        {
                            Console.WriteLine("\nAdd Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processAddMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "delete")
                        {
                            Console.WriteLine("\nDelete Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processDelMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }

                        else if (operationCalled == "edit")
                        {
                            Console.WriteLine("\nEdit Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processEditMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }

                        else if (operationCalled == "query1")
                        {
                            Console.WriteLine("\nQuery1 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery1(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "query2")
                        {
                            Console.WriteLine("\nQuery2 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery2(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                            Util.swapUrls(ref msg);
                            msg.content = "-----Query2 operation performed-----";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query3")
                        {
                            Console.WriteLine("\nQuery3 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery3(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                            Util.swapUrls(ref msg);
                            msg.content = "-----Query3 operation performed-----";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query4")
                        {
                            Console.WriteLine("\nQuery4 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery4(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "query5")
                        {
                            Console.WriteLine("\nQuery5 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery5(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                            Util.swapUrls(ref msg);
                            msg.content = "-----Query5 operation performed-----";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "persist")
                        {
                            Console.WriteLine("\nPersist Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processPersistMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "augment")
                        {
                            Console.WriteLine("\nAugment Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processAugmentedMsg(xdoc, sndr, msg, srvr);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                    }

                    catch { }



#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 2; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }                                  // so the call doesn't block.
            Util.waitForUser();
        }
Esempio n. 14
0
 private static Action DefineServiceAction(Server srvr, Sender sndr, Receiver rcvr)
 {
     Action serviceAction = () =>
     {
         Message msg = null; string msgid = "";
         while (true)
         {
             msg = rcvr.getMessage();   // note use of non-service method to deQ messages
             Console.Write("\nReceived message:");
             Console.Write("\nSender is {0}", msg.fromUrl);
             if (msg.content == "connection start message")
             {
                 Console.Write("\nConnection start message recieved\n");
                 continue; //Don't Send back Start message
             }
             else if (msg.content == "done")
             {
                 msg = FinalMessageServe(srvr, sndr, msg);
                 continue;
             }
             else if (msg.content == "closeServer")
             {
                 Console.Write("Received closeServer");
                 break;
             }
             else
             {
                 ProcessResponse(srvr, sndr, ref msg, ref msgid);
             }
         }
     };
     return serviceAction;
 }
Esempio n. 15
0
        /// <summary>
        /// Mains the specified arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        static void Main(string[] args)
        {
            DatabaseController dbController = new DatabaseController();

            Util.verbose = false;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);
            double totalTime = 0;
            int    count     = 0;

            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");
            Sender   sndr          = new Sender(Util.makeUrl(srvr.address, srvr.port));
            Receiver rcvr          = new Receiver(srvr.port, srvr.address);
            Action   serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    HiResTimer timer = new HiResTimer();
                    timer.Start();
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    srvr.displayReceivedMsg(msg);
                    if (msg.content == "connection start message")
                    {
                        continue; // don't send back start message
                    }
                    if (msg.content == "done")
                    {
                        Console.Write("\n  client {0} has finished\n", msg.fromUrl);
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    if (msg.fromUrl == "http://localhost:8080/CommService")
                    {
                        continue;
                    }
                    var result = dbController.QueryDatabase(msg.content);
                    msg.content = "received " + msg.content + " from " + msg.fromUrl;
                    Util.swapUrls(ref msg);
                    Message testMsg = new Message {
                        content = result, fromUrl = msg.fromUrl, toUrl = msg.toUrl
                    };
                    srvr.displaySentMsg(msg, result);
                    sndr.sendMessage(testMsg);
                    timer.Stop();
                    sndr.SendServerThroughput(srvr.calculateThroughput(timer, ref totalTime, ++count));
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // so the call doesn't block.
            }
            Util.waitForUser();
        }
Esempio n. 16
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();
            DBEngine <string, DBElement <string, List <string> > > testDict = new DBEngine <string, DBElement <string, List <string> > >();

            srvr.ProcessCommandLine(args);
            double timeTaken = 0, totalTime = 0, insCount = 0;

            srvr.printMessage(srvr);
            Sender        sndr          = new Sender(Util.makeUrl(srvr.address, srvr.port));
            Receiver      rcvr          = new Receiver(srvr.port, srvr.address);
            StringBuilder sb            = new StringBuilder();
            Action        serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    HiResTimer hiResTimer = new HiResTimer();
                    hiResTimer.Start();
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    srvr.printMessage(msg);
                    if (msg.content == "connection start message")
                    {
                        continue;                                            // don't send back start message
                    }
                    if (msg.fromUrl == "http://localhost:8080/CommService")
                    {
                        continue;
                    }
                    if (msg.content == "done")
                    {
                        Console.Write("\n  client has {0} finished\n", msg.fromUrl); continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer"); break;
                    }
                    msg.content = srvr.readOperations(testDict, msg);
                    Util.swapUrls(ref msg);                     // swap urls for outgoing message
#if (TEST_WPFCLIENT)
                    Message testMsg = new Message();
                    testMsg.toUrl   = msg.toUrl;
                    testMsg.fromUrl = msg.fromUrl;
                    testMsg.content = msg.content;
                    sndr.sendMessage(testMsg);
                    hiResTimer.Stop();
                    double diffTime = hiResTimer.ElapsedTimeSpan.TotalSeconds;
                    totalTime     = totalTime + diffTime;
                    timeTaken     = totalTime / (++insCount);
                    Console.Title = "Server client handling " + (insCount) + " requests";
                    srvr.printServerThroughput(timeTaken);
                    sndr.sendServerThroughput((1 / timeTaken));
#else
                    sndr.sendMessage(msg);
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }
            Util.waitForUser();                // so the call doesn't block.
        }
Esempio n. 17
0
 //--------< Define action to be performed on receiving message >------
 private static Action doserviceAction(Sender sndr, Receiver rcvr, Server srvr)
 {
   int counter_write = 0;
   int counter_read = 0;
   ulong write_clnt_process_time = 0;
   ulong read_clnt_latency_time = 0;
   ulong server_throughput_time = 0;
   Action serviceAction = () =>
   {
     Message msg = null;
     while (true)
     {
       msg = rcvr.getMessage();   // note use of non-service method to deQ messages          
       Console.Write("\n  Received message:\n");
       Console.Write("\n  sender is {0}\n", msg.fromUrl);
       Console.Write("\n  content is {0}\n", msg.content);
       if (specialMessage(ref msg, srvr, sndr, rcvr, ref read_clnt_latency_time, ref write_clnt_process_time, ref server_throughput_time, ref counter_write, ref counter_read))
       {
         continue;
       }
       else if (msg.content == "closeServer")
       {
         Console.Write("\n\nreceived closeServer\n\n");
         break;
       }
       else
       {
         WriteLine();
         List<string> msg_list = msg.content.Split(',').ToList<string>();
         IEnumerator<string> msg_enumerator = msg_list.GetEnumerator();
         ServerParser sp = new ServerParser();
         string str = "";
         while (msg_enumerator.MoveNext())
         {
           getDatabase(ref sp, ref msg_enumerator, ref str);
         };
         // swap urls for outgoing message
         msg.content = str;
         Util.swapUrls(ref msg);
         /////////////////////////////////////////////////
         // Use the statement below for normal operation
         Console.WriteLine("\n\n Sending Message: " + msg.content + "\n\n");
         sndr.sendMessage(msg);
       }
     }
   };
   return serviceAction;
 }
Esempio n. 18
0
        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)
        {
            Console.Title = "Simple Server";
            String.Format("Simple Server Started listing on {0}", port).title('=');

            SimpleSender sndr = new SimpleSender();
            Receiver     rcvr = new Receiver(port, address);

            rcvr.StartService();

            while (true)
            {
                Message msg = rcvr.getMessage();
                Console.Write("\n  Simple Server received:");
                Utilities.showMessage(msg);
                if (msg.content == "done")
                {
                    Console.WriteLine();
                    rcvr.shutDown();
                    sndr.shutdown();
                    break;
                }
                if (msg.content == "connection start message")
                {
                    continue;
                }
                msg.content = "Simple Server received: " + msg.content;
                Utilities.swapUrls(ref msg);
                if (sndr.goodStatus == true)
                {
#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 1000; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
                    sndr.sendMessage(msg);
#endif
                }
                else
                {
                    Console.Write("\n  closing\n");
                    rcvr.shutDown();
                    sndr.shutdown();
                    break;
                }
                Console.WriteLine();
            }
        }