aboutsummaryrefslogtreecommitdiff
path: root/src/server/DashSession.ts
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2020-01-08 06:30:51 -0500
committerSam Wilkins <samwilkins333@gmail.com>2020-01-08 06:30:51 -0500
commit78bedabbbe0682d089c343ad94d90d0311bdfe0e (patch)
tree9a65f04ce83fb9559d8c366fad6240649b479b6e /src/server/DashSession.ts
parent7378b5d063d9da34d485c8384efa71ba83272a61 (diff)
graceful exiting
Diffstat (limited to 'src/server/DashSession.ts')
-rw-r--r--src/server/DashSession.ts14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/server/DashSession.ts b/src/server/DashSession.ts
index c0ebc9687..7c2cfaf8d 100644
--- a/src/server/DashSession.ts
+++ b/src/server/DashSession.ts
@@ -19,17 +19,19 @@ export class DashSessionAgent extends Session.AppliedSessionAgent {
private readonly signature = "-Dash Server Session Manager";
protected async launchMonitor() {
- const monitor = await Session.initializeMonitorThread({
- key: async (key, masterLog) => {
+ const monitor = new Session.Monitor({
+ key: async key => {
+ // this sends a pseudorandomly generated guid to the configuration's recipients, allowing them alone
+ // to kill the server via the /kill/:key route
const content = `The key for this session (started @ ${new Date().toUTCString()}) is ${key}.\n\n${this.signature}`;
const failures = await Email.dispatchAll(this.notificationRecipients, "Server Termination Key", content);
if (failures) {
- failures.map(({ recipient, error: { message } }) => masterLog(red(`dispatch failure @ ${recipient} (${yellow(message)})`)));
+ failures.map(({ recipient, error: { message } }) => monitor.log(red(`dispatch failure @ ${recipient} (${yellow(message)})`)));
return false;
}
return true;
},
- crash: async ({ name, message, stack }, masterLog) => {
+ crash: async ({ name, message, stack }) => {
const body = [
"You, as a Dash Administrator, are being notified of a server crash event. Here's what we know:",
`name:\n${name}`,
@@ -40,7 +42,7 @@ export class DashSessionAgent extends Session.AppliedSessionAgent {
const content = `${body}\n\n${this.signature}`;
const failures = await Email.dispatchAll(this.notificationRecipients, "Dash Web Server Crash", content);
if (failures) {
- failures.map(({ recipient, error: { message } }) => masterLog(red(`dispatch failure @ ${recipient} (${yellow(message)})`)));
+ failures.map(({ recipient, error: { message } }) => monitor.log(red(`dispatch failure @ ${recipient} (${yellow(message)})`)));
return false;
}
return true;
@@ -52,7 +54,7 @@ export class DashSessionAgent extends Session.AppliedSessionAgent {
}
protected async launchServerWorker() {
- const worker = await Session.initializeWorkerThread(launchServer); // server initialization delegated to worker
+ const worker = new Session.ServerWorker(launchServer); // server initialization delegated to worker
worker.addExitHandler(() => Utils.Emit(WebSocket._socket, MessageStore.ConnectionTerminated, "Manual"));
return worker;
}