Archived
1
0

Hook up shared process sorta

This commit is contained in:
Asher
2019-01-18 18:04:24 -06:00
committed by Kyle Carberry
parent d827015b40
commit 811260cc80
15 changed files with 198 additions and 246 deletions

View File

@ -1,6 +1,6 @@
import { ReadWriteConnection, InitData, OperatingSystem } from "../common/connection";
import { ReadWriteConnection, InitData, OperatingSystem, ISharedProcessData } from "../common/connection";
import { NewEvalMessage, ServerMessage, EvalDoneMessage, EvalFailedMessage, TypedValue, ClientMessage, NewSessionMessage, TTYDimensions, SessionOutputMessage, CloseSessionInputMessage, WorkingInitMessage, NewConnectionMessage } from "../proto";
import { Emitter } from "@coder/events";
import { Emitter, Event } from "@coder/events";
import { logger, field } from "@coder/logger";
import { ChildProcess, SpawnOptions, ServerProcess, ServerSocket, Socket } from "./command";
@ -19,17 +19,17 @@ export class Client {
private readonly connections: Map<number, ServerSocket> = new Map();
private _initData: InitData | undefined;
private initDataEmitter: Emitter<InitData> = new Emitter();
private initDataEmitter = new Emitter<InitData>();
private initDataPromise: Promise<InitData>;
private sharedProcessActiveEmitter = new Emitter<ISharedProcessData>();
/**
* @param connection Established connection to the server
*/
public constructor(
private readonly connection: ReadWriteConnection,
) {
this.initDataEmitter = new Emitter();
connection.onMessage((data) => {
try {
this.handleMessage(ServerMessage.deserializeBinary(data));
@ -47,6 +47,10 @@ export class Client {
return this.initDataPromise;
}
public get onSharedProcessActive(): Event<ISharedProcessData> {
return this.sharedProcessActiveEmitter.event;
}
public evaluate<R>(func: () => R | Promise<R>): Promise<R>;
public evaluate<R, T1>(func: (a1: T1) => R | Promise<R>, a1: T1): Promise<R>;
public evaluate<R, T1, T2>(func: (a1: T1, a2: T2) => R | Promise<R>, a1: T1, a2: T2): Promise<R>;
@ -315,6 +319,10 @@ export class Client {
}
c.emit("end");
this.connections.delete(message.getConnectionFailure()!.getId());
} else if (message.hasSharedProcessActive()) {
this.sharedProcessActiveEmitter.emit({
socketPath: message.getSharedProcessActive()!.getSocketPath(),
});
}
}
}

View File

@ -1,5 +1,5 @@
import * as net from "net";
import { Client } from '../client';
import { Client } from "../client";
type NodeNet = typeof net;
@ -24,6 +24,7 @@ export class Net implements NodeNet {
throw new Error("not implemented");
}
// tslint:disable-next-line no-any
public createConnection(...args: any[]): net.Socket {
//@ts-ignore
return this.client.createConnection(...args) as net.Socket;

View File

@ -20,4 +20,8 @@ export interface InitData {
readonly workingDirectory: string;
readonly homeDirectory: string;
readonly tmpDirectory: string;
}
}
export interface ISharedProcessData {
readonly socketPath: string;
}