示例#1
0
        public void Shutdown(bool keepDb = false, bool keepPorts = false)
        {
            StoppingTime.Start();
            if (!Node.Stop(TimeSpan.FromSeconds(20), false, true))
            {
                throw new TimeoutException("MiniNode has not shut down in 20 seconds.");
            }

            if (!keepPorts)
            {
                PortsHelper.ReturnPort(InternalTcpEndPoint.Port);
                PortsHelper.ReturnPort(InternalTcpSecEndPoint.Port);
                PortsHelper.ReturnPort(InternalHttpEndPoint.Port);
                PortsHelper.ReturnPort(ExternalTcpEndPoint.Port);
                PortsHelper.ReturnPort(ExternalTcpSecEndPoint.Port);
                PortsHelper.ReturnPort(ExternalHttpEndPoint.Port);
            }

            if (!keepDb)
            {
                TryDeleteDirectory(_dbPath);
            }

            StoppingTime.Stop();
            RunningTime.Stop();
        }
示例#2
0
        public void Shutdown(bool keepDb = false, bool keepPorts = false)
        {
            StoppingTime.Start();

            var shutdownEvent = new ManualResetEventSlim(false);

            Node.MainBus.Subscribe(new AdHocHandler <SystemMessage.BecomeShutdown>(m => shutdownEvent.Set()));

            Node.Stop();

            if (!shutdownEvent.Wait(20000))
            {
                throw new TimeoutException("MiniNode haven't shut down in 20 seconds.");
            }

            if (!keepPorts)
            {
                PortsHelper.ReturnPort(InternalTcpEndPoint.Port);
                PortsHelper.ReturnPort(InternalTcpSecEndPoint.Port);
                PortsHelper.ReturnPort(InternalHttpEndPoint.Port);
                PortsHelper.ReturnPort(ExternalTcpEndPoint.Port);
                PortsHelper.ReturnPort(ExternalTcpSecEndPoint.Port);
                PortsHelper.ReturnPort(ExternalHttpEndPoint.Port);
            }

            if (!keepDb)
            {
                TryDeleteDirectory(_dbPath);
            }

            StoppingTime.Stop();
            RunningTime.Stop();

            _running = false;
        }