diff options
author | Sam Wilkins <samwilkins333@gmail.com> | 2020-01-03 01:15:17 -0800 |
---|---|---|
committer | Sam Wilkins <samwilkins333@gmail.com> | 2020-01-03 01:15:17 -0800 |
commit | 5111eb546d9bcd6070ddbe8076f3389a37cd7081 (patch) | |
tree | 006ddd2225988936032431b9fa8fc8faed5fdaca /src | |
parent | 75a0a9be12d4902898f8b82ec1df4e2ce41bb326 (diff) |
factored out smaller functions in session
Diffstat (limited to 'src')
-rw-r--r-- | src/client/DocServer.ts | 2 | ||||
-rw-r--r-- | src/server/session.ts | 36 |
2 files changed, 21 insertions, 17 deletions
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index befe9ea5c..47c63bfb7 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -82,7 +82,7 @@ export namespace DocServer { Utils.AddServerHandler(_socket, MessageStore.UpdateField, respondToUpdate); Utils.AddServerHandler(_socket, MessageStore.DeleteField, respondToDelete); Utils.AddServerHandler(_socket, MessageStore.DeleteFields, respondToDelete); - _socket.on("connection_terminated", () => alert("Your connection to the server has been terminated.")); + Utils.AddServerHandler(_socket, MessageStore.ConnectionTerminated, () => alert("Your connection to the server has been terminated.")); } function errorFunc(): never { diff --git a/src/server/session.ts b/src/server/session.ts index c66461d03..ec51b6e18 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -17,6 +17,7 @@ export namespace Session { export let key: string; export const signature = "Best,\nServer Session Manager"; let activeWorker: Worker; + let listening = false; const masterIdentifier = `${yellow("__master__")}:`; const workerIdentifier = `${magenta("__worker__")}:`; @@ -40,6 +41,10 @@ export namespace Session { return false; } + function logLifecycleEvent(lifecycle: string) { + process.send?.({ lifecycle }); + } + function messageHandler({ lifecycle, action }: any) { if (action) { console.log(`${workerIdentifier} action requested (${action})`); @@ -54,6 +59,21 @@ export namespace Session { } } + async function activeExit(error: Error) { + if (!listening) { + return; + } + listening = false; + await Promise.all(admin.map(recipient => Email.dispatch(recipient, "Dash Web Server Crash", crashReport(error)))); + const { _socket } = WebSocket; + if (_socket) { + Utils.Emit(_socket, MessageStore.ConnectionTerminated, "Manual"); + } + logLifecycleEvent(red(`Crash event detected @ ${new Date().toUTCString()}`)); + logLifecycleEvent(red(error.message)); + process.exit(1); + } + function crashReport({ name, message, stack }: Error) { return [ "You, as a Dash Administrator, are being notified of a server crash event. Here's what we know:", @@ -66,7 +86,6 @@ export namespace Session { } export async function initialize(work: Function) { - let listening = false; if (isMaster) { process.on("uncaughtException", error => { if (error.message !== "Channel closed") { @@ -96,22 +115,7 @@ export namespace Session { tryKillActiveWorker(); }); } else { - const logLifecycleEvent = (lifecycle: string) => process.send?.({ lifecycle }); logLifecycleEvent(green("initializing...")); - const activeExit = async (error: Error) => { - if (!listening) { - return; - } - listening = false; - await Promise.all(admin.map(recipient => Email.dispatch(recipient, "Dash Web Server Crash", crashReport(error)))); - const { _socket } = WebSocket; - if (_socket) { - Utils.Emit(_socket, MessageStore.ConnectionTerminated, "Manual"); - } - logLifecycleEvent(red(`Crash event detected @ ${new Date().toUTCString()}`)); - logLifecycleEvent(red(error.message)); - process.exit(1); - }; process.on('uncaughtException', activeExit); const checkHeartbeat = async () => { await new Promise<void>(resolve => { |