libmodulor
Version:
A TypeScript library to create platform-agnostic applications
36 lines (35 loc) • 1.2 kB
JavaScript
export function listen(server, entrypointsBuilder, logger, settingsManager) {
const host = settingsManager.get()('server_binding_host');
const port = settingsManager.get()('server_binding_port');
server.listen(port, host, () => {
logger.info(`Listening on ${entrypointsBuilder.exec().http}`);
});
}
export async function stop(server, settingsManager) {
if (!server?.listening) {
return;
}
const mode = settingsManager.get()('server_stop_mode');
// As stated in the docs of `close`, only awaiting `.close` is not enough to make sure all the connections are closed.
// Hence the wrapping in a promise, where the callback is called when the 'close' event is emitted.
return new Promise((resolve, reject) => {
if (!server) {
return resolve();
}
switch (mode) {
case 'aggressive':
server.closeAllConnections();
break;
case 'patient':
break;
default:
mode;
}
server.close((err) => {
if (err) {
return reject(err);
}
resolve();
});
});
}