aboutsummaryrefslogtreecommitdiff
path: root/src/server/session/agents/applied_session_agent.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/session/agents/applied_session_agent.ts')
-rw-r--r--src/server/session/agents/applied_session_agent.ts56
1 files changed, 0 insertions, 56 deletions
diff --git a/src/server/session/agents/applied_session_agent.ts b/src/server/session/agents/applied_session_agent.ts
deleted file mode 100644
index 53293d3bf..000000000
--- a/src/server/session/agents/applied_session_agent.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { isMaster } from "cluster";
-import { Monitor } from "./monitor";
-import { ServerWorker } from "./server_worker";
-
-export type ExitHandler = (reason: Error | boolean) => void | Promise<void>;
-
-export abstract class AppliedSessionAgent {
-
- // the following two methods allow the developer to create a custom
- // session and use the built in customization options for each thread
- protected abstract async initializeMonitor(monitor: Monitor): Promise<void>;
- protected abstract async initializeServerWorker(): Promise<ServerWorker>;
-
- private launched = false;
-
- public killSession = (reason: string, graceful = true, errorCode = 0) => {
- const target = isMaster ? this.sessionMonitor : this.serverWorker;
- target.killSession(reason, graceful, errorCode);
- }
-
- private sessionMonitorRef: Monitor | undefined;
- public get sessionMonitor(): Monitor {
- if (!isMaster) {
- this.serverWorker.sendMonitorAction("kill", {
- graceful: false,
- reason: "Cannot access the session monitor directly from the server worker thread.",
- errorCode: 1
- });
- throw new Error();
- }
- return this.sessionMonitorRef!;
- }
-
- private serverWorkerRef: ServerWorker | undefined;
- public get serverWorker(): ServerWorker {
- if (isMaster) {
- throw new Error("Cannot access the server worker directly from the session monitor thread");
- }
- return this.serverWorkerRef!;
- }
-
- public async launch(): Promise<void> {
- if (!this.launched) {
- this.launched = true;
- if (isMaster) {
- await this.initializeMonitor(this.sessionMonitorRef = Monitor.Create());
- this.sessionMonitorRef.finalize();
- } else {
- this.serverWorkerRef = await this.initializeServerWorker();
- }
- } else {
- throw new Error("Cannot launch a session thread more than once per process.");
- }
- }
-
-} \ No newline at end of file