run method
Implementation
Future<bool> run() async {
if (_running) return false;
log('Server start initiated');
_running = true;
await runZonedGuarded(
() async {
try {
_processSignalListeners.add(ProcessSignal.sighup.watch().listen((_) => _shutdown(_, 1)));
_processSignalListeners.add(ProcessSignal.sigint.watch().listen((_) {
if (_confirm(ProcessSignal.sigint, 'Press ^C again shortly to stop the server')) _shutdown(_, 2);
}));
if (!Platform.isWindows) {
_processSignalListeners.add(ProcessSignal.sigterm.watch().listen((_) => _shutdown(_, 15)));
_processSignalListeners.add(ProcessSignal.sigusr1.watch().listen((_) => _shutdown(_, 10)));
_processSignalListeners.add(ProcessSignal.sigusr2.watch().listen((_) => _shutdown(_, 12)));
}
console.on('stop', (_, __) => _shutdown(ProcessSignal.sigquit, 0),
validator: RegExp(r'^$'),
usage: 'stop',
similar: <String>['exit', 'quit', 'shutdown'],
);
await _initMongoDB();
await _initModules();
_events.dispatch(ReadyEvent());
_runModules();
await _cmServer.serve();
}
catch (err, stack) {
await error('Server initialization failed: $err', stack);
await _shutdown(ProcessSignal.sigabrt, 6);
}
},
// Handle all unhandled exceptions in order to prevent application crash
(Object err, StackTrace stack) async {
error('UNHANDLED: $err', stack);
}
);
return _running;
}