syntax = "proto3"; package main; message Msg { enum MsgKind { START = 0; READ_FILE_SYNC = 1; DATA_RESPONSE = 2; EXIT = 3; COMPILE_OUTPUT = 4; } MsgKind kind = 10; oneof payload { StartMsg start = 90; CompileOutputMsg compile_output = 100; } // READ_FILE_SYNC and MKDIRP string path = 20; // DATA_RESPONSE bytes data = 30; string error = 31; // EXIT int32 code = 40; } // START message StartMsg { string cwd = 1; repeated string argv = 2; } // WRITE_COMPILE_OUTPUT message CompileOutputMsg { string source = 1; string filename = 2; }