コード例 #1
0
        public void Run(int port)
        {
            NatashaInitializer.InitializeAndPreheating();
            _Logger?.LogInformation("初始化动态代码引擎");

            this.Port         = port;
            _requestReception = ServiceProvider.GetService <IRequestReception>();
            _tcpListener      = new TcpListener(IPAddress.Any, port);
            _tcpListener.Start();
            _Logger?.LogInformation("Gateway started, port:{0}", port);
            if (ServerCert != null)
            {
                _Logger?.LogInformation("Use ssl,certificate hash:{0}", ServerCert.GetCertHashString());
            }
            while (true)
            {
                try
                {
                    var socket = _tcpListener.AcceptSocket();
                    Task.Run(() => _requestReception.Interview(socket));
                }
                catch (Exception ex)
                {
                    _Logger?.LogError(ex, ex.Message);
                    break;
                }
            }
        }
コード例 #2
0
ファイル: MicroServiceHost.cs プロジェクト: lzb66855024/JMS
        public void Run()
        {
            ServiceProvider = _services.BuildServiceProvider();

            _logger           = ServiceProvider.GetService <ILogger <MicroServiceHost> >();
            _GatewayConnector = ServiceProvider.GetService <IGatewayConnector>();

            _GatewayConnector.ConnectAsync();

            _RequestReception = ServiceProvider.GetService <IRequestReception>();
            _scheduleTaskManager.StartTasks();

            var sslConfig = ServiceProvider.GetService <SSLConfiguration>();

            TcpListener listener = new TcpListener(ServicePort);

            listener.Start();
            _logger?.LogInformation("Service host started , port:{0}", ServicePort);
            _logger?.LogInformation("Gateways:" + AllGatewayAddresses.ToJsonString());

            if (sslConfig != null)
            {
                if (sslConfig.GatewayClientCertificate != null)
                {
                    _logger?.LogInformation("Gateway client use ssl,certificate hash:{0}", sslConfig.GatewayClientCertificate.GetCertHashString());
                }

                if (sslConfig.ServerCertificate != null)
                {
                    _logger?.LogInformation("Service host use ssl,certificate hash:{0}", sslConfig.ServerCertificate.GetCertHashString());
                }
            }

            if (ServiceProviderBuilded != null)
            {
                Task.Run(() => {
                    try
                    {
                        ServiceProviderBuilded(this, this.ServiceProvider);
                    }
                    catch (Exception ex)
                    {
                        _logger?.LogError(ex, ex.Message);
                    }
                });
            }

            using (var processExitHandler = (IProcessExitListener)ServiceProvider.GetService <IProcessExitHandler>())
            {
                processExitHandler.Listen(this);

                while (true)
                {
                    var socket = listener.AcceptSocket();
                    if (processExitHandler.ProcessExited)
                    {
                        break;
                    }

                    Task.Run(() => _RequestReception.Interview(socket));
                }
            }
        }