Example #1
0
        internal static void RpcTest(ILog logger)
        {
            var loop = true;

            //var modem = new GsmModem(logger);
            //modem.Start();

            var proxy = new ProxyService(logger);

            proxy.Start();


            var server = new ControllerServer(logger, 3302);

            server.Start();



            proxy.AddService(new LocalRpcService());
            proxy.AddService(new IdentificationService());

            var plugin = new Plugin();

            plugin.AddService(new RemoteRpcService());
            plugin.Register("Dummy");


            plugin.Invoke("local.dummy.time");

            /*
             * proxy.Invoke(new JsonRequest(0, "local.dummy.time", null));
             * proxy.Invoke(new JsonRequest(0, "remote.dummy.time", null));
             *
             * proxy.Invoke(new JsonRequest("{\"id\":\"12345\",\"method\":\"smart.relay\",\"params\":{\"relayId\":0, \"feederId\":2, \"state\":true}}"));
             */

            var clientListner = new ServerConnection(logger, proxy, "127.0.0.1", 3300)
            {
                ReconnectionTimeout = new TimeSpan(0, 0, 5)
            };                                                                                                                        //, RequestGuardtime = new TimeSpan(0, 1, 0)};

            //var clientListner = new ServerConnection(logger, proxy, "92.63.81.70", 3300) { ReconnectionTimeout = new TimeSpan(0, 0, 5) };//, RequestGuardtime = new TimeSpan(0, 1, 0)};
            clientListner.Start();

            while (loop)
            {
                try
                {
                    // TODO
                    //server.Invoke("111", new JsonRequest(0, "local.dummy.time", null));

                    //Thread.Sleep(100);
                }
                catch (ThreadAbortException)
                {
                    server.Stop();

                    throw;
                }
                catch (Exception ex)
                {
                    if (!(ex is SocketException || ex is IOException || ex is InvalidOperationException))
                    {
                        logger.Warn("Unexpected exception " + ex.GetType() + " at ModuleThread " + ex.Message);
                    }
                }
            }

            plugin.Unregister();

            loop = true;
            while (loop)
            {
                // TODO
                //proxy.Invoke(new JsonRequest(0, "remote.dummy.time", null));
                Thread.Sleep(1000);
            }

            clientListner.Stop();
            proxy.Stop();
            proxy.Dispose();
            //modem.Stop();
        }