*Refactor RPCConnection to fix design issues

This commit is contained in:
Derrick Hammer 2022-07-23 02:49:54 -04:00
parent 830aa19a4f
commit 46fdc78082
1 changed files with 29 additions and 26 deletions

View File

@ -255,21 +255,19 @@ export async function start() {
class RPCConnection { class RPCConnection {
private _socket: any; private _socket: any;
private _process = false;
constructor(socket: any) { constructor(socket: any) {
this._socket = socket; this._socket = socket;
socket.rawStream._ondestroy = () => false; socket.rawStream._ondestroy = () => false;
socket.once("data", this.checkRpc.bind(this));
}
let isRpc = false; private async checkRpc(data: Buffer) {
socket.once("data", async (data: any) => { if (data.toString() === "rpc") {
if (data === "rpc") { this._socket.once("data", this.processRequest);
isRpc = true;
} }
});
socket.once("data", async (data: any) => {
if (!isRpc) {
return;
} }
private async processRequest(data: Buffer) {
let request: RPCRequest; let request: RPCRequest;
try { try {
request = unpack(data) as RPCRequest; request = unpack(data) as RPCRequest;
@ -277,13 +275,18 @@ class RPCConnection {
return; return;
} }
const that = this as any;
try { try {
socket.write(pack(await maybeProcessRequest(request))); that.write(pack(await maybeProcessRequest(request)));
} catch (error) { } catch (error) {
console.trace(error); console.trace(error);
socket.write(pack({ error })); that.write(pack({ error }));
}
that.end();
}
public static handleRequest(socket: any) {
new RPCConnection(socket);
} }
socket.end();
});
});
} }