setupGracefulShutdown function

void setupGracefulShutdown()

Implementation

void setupGracefulShutdown() {
  if (_signalHandlersSetUp) return;
  _signalHandlersSetUp = true;

  // SIGINT handler.
  ProcessSignal.sigint.watch().listen((_) {
    _logDiag('info', 'shutdown_signal', {'signal': 'SIGINT'});
    gracefulShutdown(exitCode: 0);
  });

  // SIGTERM handler.
  ProcessSignal.sigterm.watch().listen((_) {
    _logDiag('info', 'shutdown_signal', {'signal': 'SIGTERM'});
    gracefulShutdown(exitCode: 143);
  });

  // SIGHUP handler (Unix only).
  if (!Platform.isWindows) {
    try {
      ProcessSignal.sighup.watch().listen((_) {
        _logDiag('info', 'shutdown_signal', {'signal': 'SIGHUP'});
        gracefulShutdown(exitCode: 129);
      });
    } catch (_) {
      // Signal not available on this platform.
    }
  }
}