Make everything use active evals (#30)
* Add trace log level * Use active eval to implement spdlog * Split server/client active eval interfaces Since all properties are *not* valid on both sides * +200% fire resistance * Implement exec using active evaluations * Fully implement child process streams * Watch impl, move child_process back to explicitly adding events Automatically forwarding all events might be the right move, but wanna think/discuss it a bit more because it didn't come out very cleanly. * Would you like some args with that callback? * Implement the rest of child_process using active evals * Rampant memory leaks Emit "kill" to active evaluations when client disconnects in order to kill processes. Most likely won't be the final solution. * Resolve some minor issues with output panel * Implement node-pty with active evals * Provide clearTimeout to vm sandbox * Implement socket with active evals * Extract some callback logic Also remove some eval interfaces, need to re-think those. * Implement net.Server and remainder of net.Socket using active evals * Implement dispose for active evaluations * Use trace for express requests * Handle sending buffers through evaluation events * Make event logging a bit more clear * Fix some errors due to us not actually instantiating until connect/listen * is this a commit message? * We can just create the evaluator in the ctor Not sure what I was thinking. * memory leak for you, memory leak for everyone * it's a ternary now * Don't dispose automatically on close or error The code may or may not be disposable at that point. * Handle parsing buffers on the client side as well * Remove unused protobuf * Remove TypedValue * Remove unused forkProvider and test * Improve dispose pattern for active evals * Socket calls close after error; no need to bind both * Improve comment * Comment is no longer wishy washy due to explicit boolean * Simplify check for sendHandle and options * Replace _require with __non_webpack_require__ Webpack will then replace this with `require` which we then provide to the vm sandbox. * Provide path.parse * Prevent original-fs from loading * Start with a pid of -1 vscode immediately checks the PID to see if the debug process launch correctly, but of course we don't get the pid synchronously. * Pass arguments to bootstrap-fork * Fully implement streams Was causing errors because internally the stream would set this.writing to true and it would never become false, so subsequent messages would never send. * Fix serializing errors and streams emitting errors multiple times * Was emitting close to data * Fix missing path for spawned processes * Move evaluation onDispose call Now it's accurate and runs when the active evaluation has actually disposed. * Fix promisifying fs.exists * Fix some active eval callback issues * Patch existsSync in debug adapter
This commit is contained in:
155
packages/protocol/src/proto/client_pb.d.ts
vendored
155
packages/protocol/src/proto/client_pb.d.ts
vendored
@@ -2,61 +2,10 @@
|
||||
// file: client.proto
|
||||
|
||||
import * as jspb from "google-protobuf";
|
||||
import * as command_pb from "./command_pb";
|
||||
import * as node_pb from "./node_pb";
|
||||
import * as vscode_pb from "./vscode_pb";
|
||||
|
||||
export class ClientMessage extends jspb.Message {
|
||||
hasNewSession(): boolean;
|
||||
clearNewSession(): void;
|
||||
getNewSession(): command_pb.NewSessionMessage | undefined;
|
||||
setNewSession(value?: command_pb.NewSessionMessage): void;
|
||||
|
||||
hasShutdownSession(): boolean;
|
||||
clearShutdownSession(): void;
|
||||
getShutdownSession(): command_pb.ShutdownSessionMessage | undefined;
|
||||
setShutdownSession(value?: command_pb.ShutdownSessionMessage): void;
|
||||
|
||||
hasWriteToSession(): boolean;
|
||||
clearWriteToSession(): void;
|
||||
getWriteToSession(): command_pb.WriteToSessionMessage | undefined;
|
||||
setWriteToSession(value?: command_pb.WriteToSessionMessage): void;
|
||||
|
||||
hasCloseSessionInput(): boolean;
|
||||
clearCloseSessionInput(): void;
|
||||
getCloseSessionInput(): command_pb.CloseSessionInputMessage | undefined;
|
||||
setCloseSessionInput(value?: command_pb.CloseSessionInputMessage): void;
|
||||
|
||||
hasResizeSessionTty(): boolean;
|
||||
clearResizeSessionTty(): void;
|
||||
getResizeSessionTty(): command_pb.ResizeSessionTTYMessage | undefined;
|
||||
setResizeSessionTty(value?: command_pb.ResizeSessionTTYMessage): void;
|
||||
|
||||
hasNewConnection(): boolean;
|
||||
clearNewConnection(): void;
|
||||
getNewConnection(): command_pb.NewConnectionMessage | undefined;
|
||||
setNewConnection(value?: command_pb.NewConnectionMessage): void;
|
||||
|
||||
hasConnectionOutput(): boolean;
|
||||
clearConnectionOutput(): void;
|
||||
getConnectionOutput(): command_pb.ConnectionOutputMessage | undefined;
|
||||
setConnectionOutput(value?: command_pb.ConnectionOutputMessage): void;
|
||||
|
||||
hasConnectionClose(): boolean;
|
||||
clearConnectionClose(): void;
|
||||
getConnectionClose(): command_pb.ConnectionCloseMessage | undefined;
|
||||
setConnectionClose(value?: command_pb.ConnectionCloseMessage): void;
|
||||
|
||||
hasNewServer(): boolean;
|
||||
clearNewServer(): void;
|
||||
getNewServer(): command_pb.NewServerMessage | undefined;
|
||||
setNewServer(value?: command_pb.NewServerMessage): void;
|
||||
|
||||
hasServerClose(): boolean;
|
||||
clearServerClose(): void;
|
||||
getServerClose(): command_pb.ServerCloseMessage | undefined;
|
||||
setServerClose(value?: command_pb.ServerCloseMessage): void;
|
||||
|
||||
hasNewEval(): boolean;
|
||||
clearNewEval(): void;
|
||||
getNewEval(): node_pb.NewEvalMessage | undefined;
|
||||
@@ -80,98 +29,18 @@ export class ClientMessage extends jspb.Message {
|
||||
|
||||
export namespace ClientMessage {
|
||||
export type AsObject = {
|
||||
newSession?: command_pb.NewSessionMessage.AsObject,
|
||||
shutdownSession?: command_pb.ShutdownSessionMessage.AsObject,
|
||||
writeToSession?: command_pb.WriteToSessionMessage.AsObject,
|
||||
closeSessionInput?: command_pb.CloseSessionInputMessage.AsObject,
|
||||
resizeSessionTty?: command_pb.ResizeSessionTTYMessage.AsObject,
|
||||
newConnection?: command_pb.NewConnectionMessage.AsObject,
|
||||
connectionOutput?: command_pb.ConnectionOutputMessage.AsObject,
|
||||
connectionClose?: command_pb.ConnectionCloseMessage.AsObject,
|
||||
newServer?: command_pb.NewServerMessage.AsObject,
|
||||
serverClose?: command_pb.ServerCloseMessage.AsObject,
|
||||
newEval?: node_pb.NewEvalMessage.AsObject,
|
||||
evalEvent?: node_pb.EvalEventMessage.AsObject,
|
||||
}
|
||||
|
||||
export enum MsgCase {
|
||||
MSG_NOT_SET = 0,
|
||||
NEW_SESSION = 1,
|
||||
SHUTDOWN_SESSION = 2,
|
||||
WRITE_TO_SESSION = 3,
|
||||
CLOSE_SESSION_INPUT = 4,
|
||||
RESIZE_SESSION_TTY = 5,
|
||||
NEW_CONNECTION = 6,
|
||||
CONNECTION_OUTPUT = 7,
|
||||
CONNECTION_CLOSE = 8,
|
||||
NEW_SERVER = 9,
|
||||
SERVER_CLOSE = 10,
|
||||
NEW_EVAL = 11,
|
||||
EVAL_EVENT = 12,
|
||||
}
|
||||
}
|
||||
|
||||
export class ServerMessage extends jspb.Message {
|
||||
hasNewSessionFailure(): boolean;
|
||||
clearNewSessionFailure(): void;
|
||||
getNewSessionFailure(): command_pb.NewSessionFailureMessage | undefined;
|
||||
setNewSessionFailure(value?: command_pb.NewSessionFailureMessage): void;
|
||||
|
||||
hasSessionDone(): boolean;
|
||||
clearSessionDone(): void;
|
||||
getSessionDone(): command_pb.SessionDoneMessage | undefined;
|
||||
setSessionDone(value?: command_pb.SessionDoneMessage): void;
|
||||
|
||||
hasSessionOutput(): boolean;
|
||||
clearSessionOutput(): void;
|
||||
getSessionOutput(): command_pb.SessionOutputMessage | undefined;
|
||||
setSessionOutput(value?: command_pb.SessionOutputMessage): void;
|
||||
|
||||
hasIdentifySession(): boolean;
|
||||
clearIdentifySession(): void;
|
||||
getIdentifySession(): command_pb.IdentifySessionMessage | undefined;
|
||||
setIdentifySession(value?: command_pb.IdentifySessionMessage): void;
|
||||
|
||||
hasConnectionFailure(): boolean;
|
||||
clearConnectionFailure(): void;
|
||||
getConnectionFailure(): command_pb.NewConnectionFailureMessage | undefined;
|
||||
setConnectionFailure(value?: command_pb.NewConnectionFailureMessage): void;
|
||||
|
||||
hasConnectionOutput(): boolean;
|
||||
clearConnectionOutput(): void;
|
||||
getConnectionOutput(): command_pb.ConnectionOutputMessage | undefined;
|
||||
setConnectionOutput(value?: command_pb.ConnectionOutputMessage): void;
|
||||
|
||||
hasConnectionClose(): boolean;
|
||||
clearConnectionClose(): void;
|
||||
getConnectionClose(): command_pb.ConnectionCloseMessage | undefined;
|
||||
setConnectionClose(value?: command_pb.ConnectionCloseMessage): void;
|
||||
|
||||
hasConnectionEstablished(): boolean;
|
||||
clearConnectionEstablished(): void;
|
||||
getConnectionEstablished(): command_pb.ConnectionEstablishedMessage | undefined;
|
||||
setConnectionEstablished(value?: command_pb.ConnectionEstablishedMessage): void;
|
||||
|
||||
hasServerFailure(): boolean;
|
||||
clearServerFailure(): void;
|
||||
getServerFailure(): command_pb.NewServerFailureMessage | undefined;
|
||||
setServerFailure(value?: command_pb.NewServerFailureMessage): void;
|
||||
|
||||
hasServerEstablished(): boolean;
|
||||
clearServerEstablished(): void;
|
||||
getServerEstablished(): command_pb.ServerEstablishedMessage | undefined;
|
||||
setServerEstablished(value?: command_pb.ServerEstablishedMessage): void;
|
||||
|
||||
hasServerClose(): boolean;
|
||||
clearServerClose(): void;
|
||||
getServerClose(): command_pb.ServerCloseMessage | undefined;
|
||||
setServerClose(value?: command_pb.ServerCloseMessage): void;
|
||||
|
||||
hasServerConnectionEstablished(): boolean;
|
||||
clearServerConnectionEstablished(): void;
|
||||
getServerConnectionEstablished(): command_pb.ServerConnectionEstablishedMessage | undefined;
|
||||
setServerConnectionEstablished(value?: command_pb.ServerConnectionEstablishedMessage): void;
|
||||
|
||||
hasEvalFailed(): boolean;
|
||||
clearEvalFailed(): void;
|
||||
getEvalFailed(): node_pb.EvalFailedMessage | undefined;
|
||||
@@ -210,18 +79,6 @@ export class ServerMessage extends jspb.Message {
|
||||
|
||||
export namespace ServerMessage {
|
||||
export type AsObject = {
|
||||
newSessionFailure?: command_pb.NewSessionFailureMessage.AsObject,
|
||||
sessionDone?: command_pb.SessionDoneMessage.AsObject,
|
||||
sessionOutput?: command_pb.SessionOutputMessage.AsObject,
|
||||
identifySession?: command_pb.IdentifySessionMessage.AsObject,
|
||||
connectionFailure?: command_pb.NewConnectionFailureMessage.AsObject,
|
||||
connectionOutput?: command_pb.ConnectionOutputMessage.AsObject,
|
||||
connectionClose?: command_pb.ConnectionCloseMessage.AsObject,
|
||||
connectionEstablished?: command_pb.ConnectionEstablishedMessage.AsObject,
|
||||
serverFailure?: command_pb.NewServerFailureMessage.AsObject,
|
||||
serverEstablished?: command_pb.ServerEstablishedMessage.AsObject,
|
||||
serverClose?: command_pb.ServerCloseMessage.AsObject,
|
||||
serverConnectionEstablished?: command_pb.ServerConnectionEstablishedMessage.AsObject,
|
||||
evalFailed?: node_pb.EvalFailedMessage.AsObject,
|
||||
evalDone?: node_pb.EvalDoneMessage.AsObject,
|
||||
evalEvent?: node_pb.EvalEventMessage.AsObject,
|
||||
@@ -231,18 +88,6 @@ export namespace ServerMessage {
|
||||
|
||||
export enum MsgCase {
|
||||
MSG_NOT_SET = 0,
|
||||
NEW_SESSION_FAILURE = 1,
|
||||
SESSION_DONE = 2,
|
||||
SESSION_OUTPUT = 3,
|
||||
IDENTIFY_SESSION = 4,
|
||||
CONNECTION_FAILURE = 5,
|
||||
CONNECTION_OUTPUT = 6,
|
||||
CONNECTION_CLOSE = 7,
|
||||
CONNECTION_ESTABLISHED = 8,
|
||||
SERVER_FAILURE = 9,
|
||||
SERVER_ESTABLISHED = 10,
|
||||
SERVER_CLOSE = 11,
|
||||
SERVER_CONNECTION_ESTABLISHED = 12,
|
||||
EVAL_FAILED = 13,
|
||||
EVAL_DONE = 14,
|
||||
EVAL_EVENT = 15,
|
||||
|
||||
Reference in New Issue
Block a user