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(); }
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; }