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. }
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. }