private void sendMessageToServer(IEnumerable <XElement> results, HiResTimer timer, MessageMaker msgMaker, Sender sndr, Receiver rcvr) { timer.Start(); foreach (var eachInput in results) { Message msg = new Message(); msg = msgMaker.makeMessage(this.localUrl, this.remoteUrl, eachInput); if (!sndr.Connect(msg.toUrl)) { Console.Write("\n could not connect in {0} attempts", sndr.MaxConnectAttempts); sndr.shutdown(); rcvr.shutDown(); return; } "Message sent".endofTest(); "Content".title(); Console.Write("\n\n{0}\n", msg.content); "End of message".endofTest(); while (true) { if (sndr.sendMessage(msg)) { Thread.Sleep(200); break; } } sndr.SendReaderLatency(rcvr.totalExecutionTime / rcvr.count); sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count); } }
static void Main(string[] args) { HiResTimer timer = new HiResTimer(); Message msg = new Message(); MessageMaker msgMaker = new MessageMaker(); Console.Write("\nStarting Test Executive"); Console.Write("\n=============================\n"); Console.Title = "Read Client"; ReadClient readClient = new ReadClient(); if (args.Length == 2) { readClient.numMsg = Convert.ToInt32(args[1]); } readClient.processCommandLine(args); string localPort = Util.urlPort(readClient.localUrl); string localAddr = Util.urlAddress(readClient.localUrl); Receiver rcvr = new Receiver(localPort, localAddr, timer); if (rcvr.StartService()) { rcvr.doService(rcvr.defaultServiceAction()); } Sender sndr = new Sender(readClient.localUrl); // Sender needs localUrl for start message XDocument xmlInput = readClient.GetInputFromXml(); var results = xmlInput.Descendants("element"); Console.Write("\n sender's url is {0}", readClient.localUrl); Console.Write("\n attempting to connect to {0}\n", readClient.remoteUrl); readClient.sendMessageToServer(results, timer, msgMaker, sndr, rcvr); //Wait until all messages from server are received. while (rcvr.count < readClient.numMsg) { sndr.SendReaderLatency(rcvr.totalExecutionTime / rcvr.count); } msg.content = "done"; msg.fromUrl = readClient.localUrl; msg.toUrl = readClient.remoteUrl; sndr.sendMessage(msg); Util.waitForUser(); sndr.SendReaderLatency(rcvr.totalExecutionTime / rcvr.count); rcvr.shutDown(); sndr.shutdown(); }