예제 #1
0
        private async Task RunAsync()
        {
            // (ThreadPoolSize == ProcessorCount) gives best throughput in benchmarks
            // and doesn't seem to harm performance even when server and client
            // are running on the same machine.
            GrpcEnvironment.SetThreadPoolSize(Environment.ProcessorCount);

            string host = "0.0.0.0";
            int    port = options.DriverPort;

            var tcs = new TaskCompletionSource <object>();
            var workerServiceImpl = new WorkerServiceImpl(() => { Task.Run(() => tcs.SetResult(null)); });

            var server = new Server
            {
                Services = { WorkerService.BindService(workerServiceImpl) },
                Ports    = { new ServerPort(host, options.DriverPort, ServerCredentials.Insecure) }
            };
            int boundPort = server.Ports.Single().BoundPort;

            Console.WriteLine("Running qps worker server on " + string.Format("{0}:{1}", host, boundPort));
            server.Start();
            await tcs.Task;
            await server.ShutdownAsync();
        }
예제 #2
0
        public void Listen(UnitySyncContext syncContext, IGameObjectFactory enemyFactory, Game game)
        {
            mServer = new Server();
            mServer.Ports.Add(new ServerPort(IPAddress.Any.ToString(), GameUtils.GamePort, ServerCredentials.Insecure));
            mServer.Services.Add(GameService.BindService(mGameService = new GameServiceImpl(game, enemyFactory, syncContext)));
            mGameService.MessageRecived += GameServiceOnMessageRecived;

            var meeleeWarriorService = new MeeleeWarriorServiceImpl();

            MeeleeWarriorRegistrator = meeleeWarriorService;
            mServer.Services.Add(MeeleeWarriorService.BindService(meeleeWarriorService));

            var rangedWarriorService = new RangedWarriorServiceImpl();

            RangedWarriorRegistrator = rangedWarriorService;
            mServer.Services.Add(RangedWarriorService.BindService(rangedWarriorService));

            var workerService = new WorkerServiceImpl();

            WorkerRegistrator = workerService;
            mServer.Services.Add(WorkerService.BindService(workerService));

            var buildingTemplateService = new BuildingTemplateServiceImpl();

            BuildingTemplateRegistrator = buildingTemplateService;
            mServer.Services.Add(BuildingTemplateService.BindService(buildingTemplateService));

            var centralBuildingService = new CentralBuildingServiceImpl();

            CentralBuildingRegistrator = centralBuildingService;
            mServer.Services.Add(CentralBuildingService.BindService(centralBuildingService));

            var miningCampService = new MiningCampServiceImpl();

            MiningCampRegistrator = miningCampService;
            mServer.Services.Add(MiningCampService.BindService(miningCampService));

            var barrakService = new BarrakServiceImpl();

            BarrakRegistrator = barrakService;
            mServer.Services.Add(BarrakService.BindService(barrakService));

            mServer.Start();
        }
예제 #3
0
파일: QpsWorker.cs 프로젝트: wirlfly/grpc
        private async Task RunAsync()
        {
            string host = "0.0.0.0";
            int    port = options.DriverPort;

            var tcs = new TaskCompletionSource <object>();
            var workerServiceImpl = new WorkerServiceImpl(() => { Task.Run(() => tcs.SetResult(null)); });

            var server = new Server
            {
                Services = { WorkerService.BindService(workerServiceImpl) },
                Ports    = { new ServerPort(host, options.DriverPort, ServerCredentials.Insecure) }
            };
            int boundPort = server.Ports.Single().BoundPort;

            Console.WriteLine("Running qps worker server on " + string.Format("{0}:{1}", host, boundPort));
            server.Start();
            await tcs.Task;
            await server.ShutdownAsync();
        }
예제 #4
0
        private async Task RunAsync()
        {
            string host = "0.0.0.0";
            int    port = options.DriverPort;

            var tcs = new TaskCompletionSource <object>();
            var workerServiceImpl = new WorkerServiceImpl(() => { Task.Run(() => tcs.SetResult(null)); });

            var server = new Server
            {
                Services = { WorkerService.BindService(workerServiceImpl) },
                Ports    = { new ServerPort(host, options.DriverPort, ServerCredentials.Insecure) }
            };
            int boundPort = server.Ports.Single().BoundPort;

            GrpcEnvironment.Logger.Info("Running qps worker server on {0}:{1}", host, boundPort);
            server.Start();
            await tcs.Task;
            await server.ShutdownAsync();

            GrpcEnvironment.Logger.Info("GC collection counts (after shutdown): gen0 {0}, gen1 {1}, gen2 {2}",
                                        GC.CollectionCount(0), GC.CollectionCount(1), GC.CollectionCount(2));
        }