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