Get search working and clean up disconnected client (#23)

* Use ipc instead of pipe

* Run callback passed to child process's send method

* It also returns true

* Correct send signature

* Kill processes when client disconnects
This commit is contained in:
Asher
2019-01-29 18:23:30 -06:00
committed by Kyle Carberry
parent b4798d1a48
commit 3a88ae5fb2
6 changed files with 49 additions and 31 deletions

View File

@@ -30,8 +30,8 @@ export interface ChildProcess {
kill(signal?: string): void;
send(message: string | Uint8Array, ipc?: false): void;
send(message: any, ipc: true): void;
send(message: string | Uint8Array, callback?: () => void, ipc?: false): void;
send(message: any, callback: undefined | (() => void), ipc: true): void;
on(event: "message", listener: (data: any) => void): void;
on(event: "error", listener: (err: Error) => void): void;
@@ -101,7 +101,7 @@ export class ServerProcess extends events.EventEmitter implements ChildProcess {
this._connected = false;
}
public send(message: string | Uint8Array | any, ipc: boolean = this.ipc): void {
public send(message: string | Uint8Array | any, callback?: (error: Error | null) => void, ipc: boolean = this.ipc): boolean {
const send = new WriteToSessionMessage();
send.setId(this.id);
send.setSource(ipc ? WriteToSessionMessage.Source.IPC : WriteToSessionMessage.Source.STDIN);
@@ -113,6 +113,12 @@ export class ServerProcess extends events.EventEmitter implements ChildProcess {
const client = new ClientMessage();
client.setWriteToSession(send);
this.connection.send(client.serializeBinary());
// TODO: properly implement?
if (callback) {
callback(null);
}
return true;
}
public resize(dimensions: TTYDimensions): void {