Esempio n. 1
0
        public static IGrpcServiceBuilder AddGrpc(this IServiceCollection services, Action <GrpcServerConfig> configServer)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            var opts = new GrpcServerConfig();

            configServer?.Invoke(opts);

            services.AddSingleton(opts);
            services.AddSingleton <GrpcServer>();
            services.AddHostedService <GrpcServerHostedService>();

            var serviceBuilder = new GrpcServiceBuilder(services);

            return(serviceBuilder);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Server server = new Server();

            try
            {
                SampleServerSettings settings = SampleServerSettings.LoadFromFile("SampleServerSettings.config");

                //ServiceTimeFillterAttribute.DefaultOpenTime = null;
                //ServiceTimeFillterAttribute.DefaultCloseTime = null;

                // regist service.

                GrpcServiceBuilder builder = new GrpcServiceBuilder();

                GrpcServiceBuilderSettings builderSettings = new GrpcServiceBuilderSettings();

                builderSettings.MarshallerFactory = GrpcMarshallerFactory.DefaultInstance;

                builderSettings.PerformanceListener = new GrpcServerPerformanceListener();

                RegistPerformanceEventHandlers(builderSettings.PerformanceListener);

                server.Services.Add(builder.BuildService("PlayerSearch", typeof(PlayerSearch), new PlayerSearchServiceImpl(), builderSettings));


                // regist heartbeat.

                server.Services.Add(GrpcHeartbeat.BuildService());


                // start server.

                Grpc.Core.ServerCredentials credential = Grpc.Core.ServerCredentials.Insecure;

                server.Ports.Add(settings.ServerName, settings.ServerPort, credential);

                Console.WriteLine(string.Format("Starting... {0}:{1}", settings.ServerName, settings.ServerPort));
                server.Start();
                Console.WriteLine("Started.");

                Console.WriteLine("If you want to shutdown, please press any key.");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.WriteLine("In shutdown...");
                try
                {
                    if (server != null)
                    {
                        server.ShutdownAsync().Wait();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                Console.WriteLine("Shutdown completed.");
            }

            Console.WriteLine("If you want to close, please press any key.");
            Console.ReadLine();
        }