static void Main(string[] args) { try { PerfArguments perfArgs = new PerfArguments(args); if (args.Length == 0 || Arguments.IsHelp(perfArgs.Operation)) { Usage(); return; } if (perfArgs.TraceLevel != 0) { Trace.TraceLevel = perfArgs.TraceLevel; Trace.TraceListener = (f, o) => Console.WriteLine(DateTime.Now.ToString("[hh:mm:ss.fff]") + " " + string.Format(f, o)); } Role role; if (string.Equals("send", perfArgs.Operation, StringComparison.OrdinalIgnoreCase)) { role = new Sender(perfArgs); } else if (string.Equals("receive", perfArgs.Operation, StringComparison.OrdinalIgnoreCase)) { role = new Receiver(perfArgs); } else if (string.Equals("request", perfArgs.Operation, StringComparison.OrdinalIgnoreCase)) { role = new Requestor(perfArgs); } else if (string.Equals("reply", perfArgs.Operation, StringComparison.OrdinalIgnoreCase)) { role = new ReplyListener(perfArgs); } else if (string.Equals("listen", perfArgs.Operation, StringComparison.OrdinalIgnoreCase)) { role = new Listener(perfArgs); } else { throw new ArgumentException(perfArgs.Operation); } Console.WriteLine("Running perf test..."); role.Run(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
/// <summary> /// Creates a Receiver from the client. /// </summary> /// <param name="address">The address of the node where messages are received.</param> /// <returns>A Receiver object.</returns> public Receiver CreateReceiver(string address) { Fx.AssertAndThrow(ErrorCode.ClientNotConnected, this.state > 0 && this.state < 0xff); var receiver = new Receiver(this, Client.Name + "-receiver" + Interlocked.Increment(ref linkId), address); lock (this) { this.AddLink(receiver, true, address, null); return receiver; } }