diff --git a/dispatch.go b/dispatch.go index 04a5eddbb54230..1d67d9e464c439 100644 --- a/dispatch.go +++ b/dispatch.go @@ -27,9 +27,9 @@ func recv(buf []byte) (response []byte) { msg := &BaseMsg{} check(proto.Unmarshal(buf, msg)) assert(len(msg.Payload) > 0, "BaseMsg has empty payload.") - subscribers, ok := channels[*msg.Channel] + subscribers, ok := channels[msg.Channel] if !ok { - panic("No subscribers for channel " + *msg.Channel) + panic("No subscribers for channel " + msg.Channel) } for i := 0; i < len(subscribers); i++ { s := subscribers[i] @@ -52,7 +52,7 @@ func Sub(channel string, cb Subscriber) { func Pub(channel string, payload []byte) { resChan <- &BaseMsg{ - Channel: &channel, + Channel: channel, Payload: payload, } } diff --git a/main.go b/main.go index e3eb446f6d8377..bb2e32205d675e 100644 --- a/main.go +++ b/main.go @@ -60,12 +60,12 @@ func main() { var command = Msg_START // TODO use proto3 PubMsg("start", &Msg{ - Command: &command, - StartCwd: &cwd, + Command: command, + StartCwd: cwd, StartArgv: args, - StartDebugFlag: flagDebug, - StartMainJs: &main_js, - StartMainMap: &main_map, + StartDebugFlag: *flagDebug, + StartMainJs: main_js, + StartMainMap: main_map, }) DispatchLoop() diff --git a/msg.proto b/msg.proto index dcaa72af867c6b..db86f8ae196ca1 100644 --- a/msg.proto +++ b/msg.proto @@ -1,21 +1,21 @@ -syntax = "proto2"; +syntax = "proto3"; package main; message BaseMsg { - optional string channel = 1; - optional bytes payload = 2; + string channel = 1; + bytes payload = 2; } message Msg { - optional string error = 1; + string error = 1; enum Command { - ERROR = 1; - START = 2; - SOURCE_CODE_FETCH_RES = 3; + ERROR = 0; + START = 1; + SOURCE_CODE_FETCH_RES = 2; ONEOF = 100; } - optional Command command = 2 [ default = ONEOF ]; + Command command = 2; // 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 @@ -24,21 +24,20 @@ message Msg { // arguments by their name. // Start - optional string start_cwd = 10; + 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 + bool start_debug_flag = 12; + string start_main_js = 13; // The contents of dist/main.js + string start_main_map = 14; // The contents of dist/main.map // 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 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. + string source_code_fetch_res_module_name = 30; + string source_code_fetch_res_filename = 31; + string source_code_fetch_res_source_code = 32; + string source_code_fetch_res_output_code = 33; // Non-empty only if cached. oneof payload { SourceCodeFetchMsg source_code_fetch = 100; @@ -51,27 +50,27 @@ message Msg { } message SourceCodeFetchMsg { - optional string module_specifier = 1; - optional string containing_file = 2; + string module_specifier = 1; + string containing_file = 2; } message SourceCodeCacheMsg { - optional string filename = 1; - optional string source_code = 2; - optional string output_code = 3; + string filename = 1; + string source_code = 2; + string output_code = 3; } -message ExitMsg { optional int32 code = 1; } +message ExitMsg { int32 code = 1; } message TimerStartMsg { - optional int32 id = 1; - optional bool interval = 2; - optional int32 duration = 3; // In milliseconds. + int32 id = 1; + bool interval = 2; + int32 duration = 3; // In milliseconds. } message TimerReadyMsg { - optional int32 id = 1; - optional bool done = 2; + int32 id = 1; + bool done = 2; } -message TimerClearMsg { optional int32 id = 1; } +message TimerClearMsg { int32 id = 1; } diff --git a/os.go b/os.go index fe47899619826a..9a677ed6ec1a14 100644 --- a/os.go +++ b/os.go @@ -18,14 +18,15 @@ func InitOS() { switch msg.Payload.(type) { case *Msg_Exit: payload := msg.GetExit() - os.Exit(int(*payload.Code)) + os.Exit(int(payload.Code)) case *Msg_SourceCodeFetch: payload := msg.GetSourceCodeFetch() - return HandleSourceCodeFetch(*payload.ModuleSpecifier, *payload.ContainingFile) + return HandleSourceCodeFetch(payload.ModuleSpecifier, + payload.ContainingFile) case *Msg_SourceCodeCache: payload := msg.GetSourceCodeCache() - return HandleSourceCodeCache(*payload.Filename, *payload.SourceCode, - *payload.OutputCode) + return HandleSourceCodeCache(payload.Filename, payload.SourceCode, + payload.OutputCode) default: panic("[os] Unexpected message " + string(buf)) } @@ -64,8 +65,7 @@ func HandleSourceCodeFetch(moduleSpecifier string, containingFile string) (out [ defer func() { if err != nil { - var errStr = err.Error() - res.Error = &errStr + res.Error = err.Error() } out, err = proto.Marshal(res) check(err) @@ -101,11 +101,11 @@ func HandleSourceCodeFetch(moduleSpecifier string, containingFile string) (out [ var sourceCode = string(sourceCodeBuf) var command = Msg_SOURCE_CODE_FETCH_RES res = &Msg{ - Command: &command, - SourceCodeFetchResModuleName: &moduleName, - SourceCodeFetchResFilename: &filename, - SourceCodeFetchResSourceCode: &sourceCode, - SourceCodeFetchResOutputCode: &outputCode, + Command: command, + SourceCodeFetchResModuleName: moduleName, + SourceCodeFetchResFilename: filename, + SourceCodeFetchResSourceCode: sourceCode, + SourceCodeFetchResOutputCode: outputCode, } return } @@ -118,8 +118,7 @@ func HandleSourceCodeCache(filename string, sourceCode string, err := ioutil.WriteFile(fn, outputCodeBuf, 0600) res := &Msg{} if err != nil { - var errStr = err.Error() - res.Error = &errStr + res.Error = err.Error() } out, err := proto.Marshal(res) check(err) diff --git a/timers.go b/timers.go index 91aaf1806de7d5..cfe0f054422d22 100644 --- a/timers.go +++ b/timers.go @@ -22,19 +22,19 @@ func InitTimers() { switch msg.Payload.(type) { case *Msg_TimerStart: payload := msg.GetTimerStart() - timers[*payload.Id] = &Timer{ - Id: *payload.Id, + timers[payload.Id] = &Timer{ + Id: payload.Id, Done: false, - Interval: *payload.Interval, - Duration: *payload.Duration, + Interval: payload.Interval, + Duration: payload.Duration, Cleared: false, } - timers[*payload.Id].StartTimer() + timers[payload.Id].StartTimer() return nil case *Msg_TimerClear: payload := msg.GetTimerClear() // TODO maybe need mutex here. - timer := timers[*payload.Id] + timer := timers[payload.Id] timer.Clear() return nil default: @@ -64,8 +64,8 @@ func (t *Timer) StartTimer() { PubMsg("timers", &Msg{ Payload: &Msg_TimerReady{ TimerReady: &TimerReadyMsg{ - Id: &t.Id, - Done: &t.Done, + Id: t.Id, + Done: t.Done, }, }, })