Exemple #1
0
        public override async Task RunServer(IAsyncStreamReader <ServerArgs> requestStream, IServerStreamWriter <ServerStatus> responseStream, ServerCallContext context)
        {
            if (!await requestStream.MoveNext())
            {
                throw new InvalidOperationException();
            }
            var serverConfig = requestStream.Current.Setup;
            var runner       = ServerRunner.Start(_loggerFactory, serverConfig);

            try
            {
                await responseStream.WriteAsync(new ServerStatus
                {
                    Stats = runner.GetStats(false),
                    Port  = runner.BoundPort,
                    Cores = Environment.ProcessorCount,
                });

                while (await requestStream.MoveNext())
                {
                    var reset = requestStream.Current.Mark.Reset;
                    await responseStream.WriteAsync(new ServerStatus
                    {
                        Stats = runner.GetStats(reset)
                    });
                }
            }
            finally
            {
                _logger.LogInformation("Exiting RunServer.");
                await runner.StopAsync();
            }
        }
Exemple #2
0
        /*
         * helper: If you dont like duplicationg code. Use this
         */
        private static (ServerRunner serverRunner, Player playerInit, ClientRunner clientRunner) InitiateServer()
        {
            var server = new ServerRunner();

            server.Start();
            var client = new ClientRunner("127.0.0.1", 32123);

            client.Start();
            client.JoinServer("player");
            return(server, server.GetPlayer("player"), client);
        }
Exemple #3
0
        public void TestGetPlayerShouldNotBeNull()
        {
            var server = new ServerRunner();

            server.Start();
            var client = new ClientRunner("127.0.0.1", 32123);

            client.Start();
            client.JoinServer("player");
            server.GetPlayer("player").Should().NotBeNull();
            server.Stop();
        }
Exemple #4
0
        public void TestLeavePlayer()
        {
            var server = new ServerRunner();

            server.Start();
            var client = new ClientRunner("127.0.0.1", 32123);

            client.Start();
            client.JoinServer("player");
            Thread.Sleep(1000);
            var player = server.GetPlayer("player");

            server.LeavePlayer(server.GetPlayerInfo(player.Pseudo)).Should().Be(true);
            server.Stop();
        }
Exemple #5
0
        public void TestGetPlayerPosition()
        {
            var server = new ServerRunner();

            server.Start();
            var client = new ClientRunner("127.0.0.1", 32123);

            client.Start();
            client.JoinServer("player");
            Thread.Sleep(1000);
            var player = server.GetPlayer("player");

            Thread.Sleep(1000);
            server.Invoking(o => o.GetPlayerPosition(player)).ShouldNotThrow <NullReferenceException>();
            server.Stop();
        }