Skip to content

Commit

Permalink
Move away from oneof in msg.proto
Browse files Browse the repository at this point in the history
This is due to the size added to msg.pb.js for every new message. See
comment in msg.proto.
  • Loading branch information
ry committed May 25, 2018
1 parent 8eeeded commit d765300
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 44 deletions.
16 changes: 7 additions & 9 deletions main.go
Expand Up @@ -58,16 +58,14 @@ func main() {
cwd, err := os.Getwd()
check(err)

var command = Msg_START // TODO use proto3
PubMsg("start", &Msg{
Payload: &Msg_Start{
Start: &StartMsg{
Cwd: &cwd,
Argv: args,
DebugFlag: flagDebug,
MainJs: &main_js,
MainMap: &main_map,
},
},
Command: &command,
StartCwd: &cwd,
StartArgv: args,
StartDebugFlag: flagDebug,
StartMainJs: &main_js,
StartMainMap: &main_map,
})

DispatchLoop()
Expand Down
6 changes: 5 additions & 1 deletion main.ts
Expand Up @@ -19,7 +19,11 @@ dispatch.sub("start", (payload: Uint8Array) => {
startCalled = true;

const msg = pb.Msg.decode(payload);
const { cwd, argv, debugFlag, mainJs, mainMap } = msg.start;
const cwd = msg.startCwd;
const argv = msg.startArgv;
const debugFlag = msg.startDebugFlag;
const mainJs = msg.startMainJs;
const mainMap = msg.startMainMap;

debug = debugFlag;
util.log("start", { cwd, argv, debugFlag });
Expand Down
64 changes: 38 additions & 26 deletions msg.proto
Expand Up @@ -8,39 +8,51 @@ message BaseMsg {

message Msg {
optional string error = 1;
oneof payload {
StartMsg start = 10;
SourceCodeFetchMsg source_code_fetch = 11;
SourceCodeFetchResMsg source_code_fetch_res = 12;
SourceCodeCacheMsg source_code_cache = 13;
ExitMsg exit = 14;
TimerStartMsg timer_start = 15;
TimerReadyMsg timer_ready = 16;
TimerClearMsg timer_clear = 17;

enum Command {
ERROR = 1;
START = 2;
SOURCE_CODE_FETCH_RES = 3;
ONEOF = 100;
}
}
optional Command command = 2 [ default = ONEOF ];

message StartMsg {
optional string cwd = 1;
repeated string argv = 2;
optional bool debug_flag = 3;
optional string main_js = 4; // The contents of dist/main.js
optional string main_map = 5; // The contents of dist/main.map
}
// We avoid creating a message for each command (and use oneof or any types)
// In order to reduce code in the size of the generated javascript
// "msg.pb.js". It seems that each new message adds 20k and we want to
// potentially add many hundreds of commands. Therefore we just prefix command
// arguments by their name.

message SourceCodeFetchMsg {
optional string module_specifier = 1;
optional string containing_file = 2;
}
// Start
optional string start_cwd = 10;
repeated string start_argv = 11;
optional bool start_debug_flag = 12;
optional string start_main_js = 13; // The contents of dist/main.js
optional string start_main_map = 14; // The contents of dist/main.map

message SourceCodeFetchResMsg {
// SOURCE_CODE_FETCH_RES
// If it's a non-http module, moduleName and filename will be the same.
// For http modules, moduleName is its resolved http URL, and filename
// is the location of the locally downloaded source code.
optional string moduleName = 1;
optional string filename = 2;
optional string source_code = 3;
optional string output_code = 4; // Non-empty only if cached.
optional string source_code_fetch_res_module_name = 30;
optional string source_code_fetch_res_filename = 31;
optional string source_code_fetch_res_source_code = 32;
optional string source_code_fetch_res_output_code =
33; // Non-empty only if cached.

oneof payload {
SourceCodeFetchMsg source_code_fetch = 100;
SourceCodeCacheMsg source_code_cache = 102;
ExitMsg exit = 103;
TimerStartMsg timer_start = 104;
TimerReadyMsg timer_ready = 105;
TimerClearMsg timer_clear = 106;
}
}

message SourceCodeFetchMsg {
optional string module_specifier = 1;
optional string containing_file = 2;
}

message SourceCodeCacheMsg {
Expand Down
14 changes: 7 additions & 7 deletions os.go
Expand Up @@ -99,13 +99,13 @@ func HandleSourceCodeFetch(moduleSpecifier string, containingFile string) (out [
}

var sourceCode = string(sourceCodeBuf)
res.Payload = &Msg_SourceCodeFetchRes{
SourceCodeFetchRes: &SourceCodeFetchResMsg{
ModuleName: &moduleName,
Filename: &filename,
SourceCode: &sourceCode,
OutputCode: &outputCode,
},
var command = Msg_SOURCE_CODE_FETCH_RES
res = &Msg{
Command: &command,
SourceCodeFetchResModuleName: &moduleName,
SourceCodeFetchResFilename: &filename,
SourceCodeFetchResSourceCode: &sourceCode,
SourceCodeFetchResOutputCode: &outputCode,
}
return
}
Expand Down
10 changes: 9 additions & 1 deletion os.ts
@@ -1,5 +1,7 @@
import { ModuleInfo } from "./types";
import { sendMsg } from "./dispatch";
import { main as pb } from "./msg.pb";
import { assert } from "./util";

export function exit(code = 0): void {
sendMsg("os", { exit: { code } });
Expand All @@ -12,7 +14,13 @@ export function sourceCodeFetch(
const res = sendMsg("os", {
sourceCodeFetch: { moduleSpecifier, containingFile }
});
return res.sourceCodeFetchRes;
assert(res.command === pb.Msg.Command.SOURCE_CODE_FETCH_RES);
return {
moduleName: res.sourceCodeFetchResModuleName,
filename: res.sourceCodeFetchResFilename,
sourceCode: res.sourceCodeFetchResSourceCode,
outputCode: res.sourceCodeFetchResOutputCode
};
}

export function sourceCodeCache(
Expand Down

0 comments on commit d765300

Please sign in to comment.