示例#1
0
        public static CrankArguments Parse()
        {
            CrankArguments args = null;

            try
            {
                args = CommandLine.Parse <CrankArguments>();
            }
            catch (CommandLineException e)
            {
                Console.WriteLine(e.ArgumentHelp.Message);
                Console.WriteLine(e.ArgumentHelp.GetHelpText(Console.BufferWidth));
                Environment.Exit(1);
            }
            return(args);
        }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello SignalR Superviser!");

            Arguments = CrankArguments.Parse();
            ThreadPool.SetMinThreads(Arguments.Connections, 2);
            TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;
            ConnectionFactory.SignalRServerUri     = Arguments.Url;

            Initialize().Wait();

            string input = Console.ReadLine();

            while (!string.IsNullOrWhiteSpace(input))
            {
                try
                {
                    var ss = input.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                    switch (ss[0].ToLower())
                    {
                    case "echo":     // server will echo back regardless of the ConnectionBehavior
                        Superviser.TryEcho($"C{DateTime.UtcNow.Ticks.ToString()}|{ss[1]}");
                        break;

                    case "broadcast":     // server will broadcast to all supervisers regardless of the ConnectionBehavior
                        Superviser.TryBroadcast($"C{DateTime.UtcNow.Ticks.ToString()}|{ss[1]}");
                        break;

                    case "send":     // server will Echo, Broadcast or do nothing in according to ConnectionBehavior, supervisers only
                        Superviser.TrySend($"C{DateTime.UtcNow.Ticks.ToString()}|{ss[1]}");
                        break;

                    case "server":
                        Superviser.ConfigServer(ss);
                        break;

                    case "client":
                        Superviser.ClientOps(ss);
                        break;

                    case "x":     // a quick command for `server stop`
                        Superviser.ConfigServer("server", "stop");
                        break;

                    case "v":
                        Arguments.Verbose = !Arguments.Verbose;
                        break;

                    default:
                        break;
                    }
                }
                catch
                {
                    Console.WriteLine("input invalid");
                }

                input = Console.ReadLine();
            }

            Shutdown().Wait();
        }