コード例 #1
0
ファイル: SocketWireTest.cs プロジェクト: Tryweirder/rd
        internal static IProtocol Server(Lifetime lifetime, int?port = null)
        {
            var id     = "TestServer";
            var server = new SocketWire.Server(lifetime, SynchronousScheduler.Instance, new IPEndPoint(IPAddress.Loopback, port ?? 0), id);

            return(new Protocol(id, new Serializers(lifetime, null, null), new Identities(IdKind.Server), SynchronousScheduler.Instance, server, lifetime));
        }
コード例 #2
0
 protected void Queue(Action action)
 {
     SingleThreadScheduler.RunOnSeparateThread(SocketLifetime, "Worker", scheduler =>
     {
         var client = new SocketWire.Server(ModelLifetime, scheduler, new IPEndPoint(IPAddress.Loopback, Port),
                                            "DemoServer");
         var serializers = new Serializers();
         Protocol        = new Protocol("Server", serializers, new Identities(IdKind.Server), scheduler, client,
                                        SocketLifetime);
         scheduler.Queue(action);
     });
 }
コード例 #3
0
        private static void MainLifetime(string[] args, LifetimeDefinition lifetimeDefinition)
        {
            var lifetime = lifetimeDefinition.Lifetime;

            var reflectionSerializers = new ReflectionSerializersFacade();
            var serializers           = new Serializers(reflectionSerializers.Registrar);

            var      scheduler = SingleThreadScheduler.RunOnSeparateThread(lifetime, "Scheduler");
            Protocol protocol;

            SocketWire.Base wire;


            var isServer = args.Length == 0 ? Util.Fork(args) : args[0] == "server";

            if (isServer)
            {
                Console.Title = "Server";
                wire          = new SocketWire.Server(lifetime, scheduler, ourIpEndPoint);
                protocol      = new Protocol("Server", serializers, new Identities(IdKind.Server), scheduler, wire, lifetime);
            }
            else
            {
                Console.Title = "Client";
                wire          = new SocketWire.Client(lifetime, scheduler, ourIpEndPoint);
                protocol      = new Protocol("Client", serializers, new Identities(IdKind.Client), scheduler, wire, lifetime);
            }

            scheduler.Queue(() => RunApplication(isServer, reflectionSerializers, lifetime, protocol));

            wire.Connected.Change.Advise(lifetime, value =>
            {
                if (value)
                {
                    Console.Title += ": connected";
                }
                else
                {
                    lifetimeDefinition.Terminate();
                }
            });

            while (lifetime.IsAlive)
            {
                if (Console.KeyAvailable && OnChar != null)
                {
                    scheduler.Queue(() => OnChar?.Invoke(Console.ReadKey(true).KeyChar));
                }

                Thread.Sleep(100);
            }
        }
コード例 #4
0
        public RiderProtocolController(IScheduler mainThreadScheduler, Lifetime lifetime)
        {
            try
            {
                ourLogger.Verbose("Start ControllerTask...");

                Wire = new SocketWire.Server(lifetime, mainThreadScheduler, null, "UnityServer");
                ourLogger.Verbose($"Created SocketWire with port = {Wire.Port}");
            }
            catch (Exception ex)
            {
                ourLogger.Error("RiderProtocolController.ctor. " + ex);
            }
        }
コード例 #5
0
        private void SetupModel(Lifetime lifetime, ISolution solution)
        {
            var scheduler = SingleThreadScheduler.RunOnSeparateThread(lifetime, Host);
            var server    = new SocketWire.Server(lifetime, scheduler);

            Port = server.Port;
            var serializers = new Serializers();
            var identities  = new Identities(IdKind.Server);

            scheduler.Queue(() =>
            {
                var protocol = new Protocol(Protocol, serializers, identities, scheduler, server, lifetime);
                var model    = new DteProtocolModel(lifetime, protocol);
                RegisterCallbacks(model, solution);
            });
        }
コード例 #6
0
        public RiderProtocolController(IScheduler mainThreadScheduler, Lifetime lifetime)
        {
            var logger = Log.GetLog <RiderProtocolController>();

            try
            {
                logger.Log(LoggingLevel.VERBOSE, "Start ControllerTask...");

                Wire = new SocketWire.Server(lifetime, mainThreadScheduler, null, "UnityServer", true);
                logger.Log(LoggingLevel.VERBOSE, $"Created SocketWire with port = {Wire.Port}");
                InitializeProtocolJson(Wire.Port, logger);
            }
            catch (Exception ex)
            {
                logger.Error("RiderProtocolController.ctor. " + ex);
            }
        }