|
1 | 1 | import * as os from "os";
|
2 | 2 | import * as cp from "child_process";
|
3 | 3 | import * as path from "path";
|
4 |
| -import { mkdir, WriteStream } from "fs"; |
| 4 | +import { mkdir } from "fs"; |
5 | 5 | import { promisify } from "util";
|
6 | 6 | import { TextDecoder } from "text-encoding";
|
7 | 7 | import { logger, field } from "@coder/logger";
|
@@ -37,6 +37,17 @@ export class Server {
|
37 | 37 | logger.error("Failed to handle client message", field("length", data.byteLength), field("exception", ex));
|
38 | 38 | }
|
39 | 39 | });
|
| 40 | + connection.onClose(() => { |
| 41 | + this.sessions.forEach((s) => { |
| 42 | + s.kill(); |
| 43 | + }); |
| 44 | + this.connections.forEach((c) => { |
| 45 | + c.destroy(); |
| 46 | + }); |
| 47 | + this.servers.forEach((s) => { |
| 48 | + s.close(); |
| 49 | + }); |
| 50 | + }); |
40 | 51 |
|
41 | 52 | if (!options) {
|
42 | 53 | logger.warn("No server options provided. InitMessage will not be sent.");
|
@@ -97,7 +108,12 @@ export class Server {
|
97 | 108 | private handleMessage(message: ClientMessage): void {
|
98 | 109 | if (message.hasNewEval()) {
|
99 | 110 | const evalMessage = message.getNewEval()!;
|
100 |
| - logger.debug("EvalMessage", field("id", evalMessage.getId())); |
| 111 | + logger.debug(() => [ |
| 112 | + "EvalMessage", |
| 113 | + field("id", evalMessage.getId()), |
| 114 | + field("args", evalMessage.getArgsList()), |
| 115 | + field("function", evalMessage.getFunction()), |
| 116 | + ]); |
101 | 117 | evaluate(this.connection, evalMessage);
|
102 | 118 | } else if (message.hasNewSession()) {
|
103 | 119 | const sessionMessage = message.getNewSession()!;
|
@@ -141,10 +157,10 @@ export class Server {
|
141 | 157 | const data = new TextDecoder().decode(writeToSessionMessage.getData_asU8());
|
142 | 158 | const source = writeToSessionMessage.getSource();
|
143 | 159 | if (source === WriteToSessionMessage.Source.IPC) {
|
144 |
| - if (!s.stdio || !s.stdio[3]) { |
| 160 | + if (!s.send) { |
145 | 161 | throw new Error("Cannot send message via IPC to process without IPC");
|
146 | 162 | }
|
147 |
| - (s.stdio[3] as WriteStream).write(data); |
| 163 | + s.send(JSON.parse(data)); |
148 | 164 | } else {
|
149 | 165 | s.write(data);
|
150 | 166 | }
|
|
0 commit comments