2018-08-15 23:36:48 -04:00
|
|
|
union Any {
|
2018-07-06 11:27:36 -04:00
|
|
|
Start,
|
|
|
|
StartRes,
|
|
|
|
CodeFetch,
|
|
|
|
CodeFetchRes,
|
|
|
|
CodeCache,
|
|
|
|
Exit,
|
|
|
|
TimerStart,
|
|
|
|
TimerReady,
|
|
|
|
TimerClear,
|
2018-08-31 07:51:12 -04:00
|
|
|
Environ,
|
|
|
|
EnvironRes,
|
2018-07-06 11:27:36 -04:00
|
|
|
FetchReq,
|
|
|
|
FetchRes,
|
2018-08-23 18:36:45 -04:00
|
|
|
MakeTempDir,
|
|
|
|
MakeTempDirRes,
|
2018-09-10 05:48:36 -04:00
|
|
|
Mkdir,
|
2018-09-10 23:40:03 -04:00
|
|
|
Remove,
|
2018-09-09 20:25:43 -04:00
|
|
|
ReadFile,
|
|
|
|
ReadFileRes,
|
2018-09-11 12:00:57 -04:00
|
|
|
WriteFile,
|
2018-09-12 11:44:58 -04:00
|
|
|
Rename,
|
2018-09-19 00:38:24 -04:00
|
|
|
Symlink,
|
2018-09-11 15:38:53 -04:00
|
|
|
Stat,
|
|
|
|
StatRes,
|
2018-08-31 07:51:12 -04:00
|
|
|
SetEnv,
|
2018-07-04 14:50:28 -04:00
|
|
|
}
|
|
|
|
|
2018-08-15 23:36:48 -04:00
|
|
|
enum ErrorKind: byte {
|
|
|
|
NoError = 0,
|
|
|
|
|
|
|
|
// io errors
|
|
|
|
|
|
|
|
NotFound,
|
|
|
|
PermissionDenied,
|
|
|
|
ConnectionRefused,
|
|
|
|
ConnectionReset,
|
|
|
|
ConnectionAborted,
|
|
|
|
NotConnected,
|
|
|
|
AddrInUse,
|
|
|
|
AddrNotAvailable,
|
|
|
|
BrokenPipe,
|
|
|
|
AlreadyExists,
|
|
|
|
WouldBlock,
|
|
|
|
InvalidInput,
|
|
|
|
InvalidData,
|
|
|
|
TimedOut,
|
|
|
|
Interrupted,
|
|
|
|
WriteZero,
|
|
|
|
Other,
|
|
|
|
UnexpectedEof,
|
|
|
|
|
|
|
|
// url errors
|
|
|
|
|
|
|
|
EmptyHost,
|
|
|
|
IdnaError,
|
|
|
|
InvalidPort,
|
|
|
|
InvalidIpv4Address,
|
|
|
|
InvalidIpv6Address,
|
|
|
|
InvalidDomainCharacter,
|
|
|
|
RelativeUrlWithoutBase,
|
|
|
|
RelativeUrlWithCannotBeABaseBase,
|
|
|
|
SetHostOnCannotBeABaseUrl,
|
|
|
|
Overflow,
|
2018-08-14 16:50:53 -04:00
|
|
|
|
|
|
|
// hyper errors
|
|
|
|
|
|
|
|
HttpUser,
|
|
|
|
HttpClosed,
|
|
|
|
HttpCanceled,
|
|
|
|
HttpParse,
|
|
|
|
HttpOther,
|
2018-08-15 23:36:48 -04:00
|
|
|
}
|
|
|
|
|
2018-07-06 11:27:36 -04:00
|
|
|
table Base {
|
2018-08-17 16:59:57 -04:00
|
|
|
cmd_id: uint32;
|
2018-09-05 22:13:36 -04:00
|
|
|
sync: bool = true; // TODO(ry) Change default to false.
|
2018-08-15 23:36:48 -04:00
|
|
|
error_kind: ErrorKind = NoError;
|
2018-07-06 11:27:36 -04:00
|
|
|
error: string;
|
|
|
|
msg: Any;
|
2018-07-04 14:50:28 -04:00
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
table Start {
|
2018-07-06 11:27:36 -04:00
|
|
|
unused: int8;
|
|
|
|
}
|
|
|
|
|
|
|
|
table StartRes {
|
|
|
|
cwd: string;
|
|
|
|
argv: [string];
|
|
|
|
debug_flag: bool;
|
2018-09-02 18:50:46 -04:00
|
|
|
deps_flag: bool;
|
2018-09-24 15:33:50 -04:00
|
|
|
recompile_flag: bool;
|
2018-07-06 11:27:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
table CodeFetch {
|
|
|
|
module_specifier: string;
|
|
|
|
containing_file: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
table CodeFetchRes {
|
|
|
|
// 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.
|
|
|
|
module_name: string;
|
|
|
|
filename: string;
|
|
|
|
source_code: string;
|
|
|
|
output_code: string; // Non-empty only if cached.
|
|
|
|
}
|
|
|
|
|
|
|
|
table CodeCache {
|
|
|
|
filename: string;
|
|
|
|
source_code: string;
|
|
|
|
output_code: string;
|
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
table Exit {
|
2018-07-06 11:27:36 -04:00
|
|
|
code: int;
|
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
table TimerStart {
|
2018-07-06 11:27:36 -04:00
|
|
|
id: uint;
|
2018-08-09 15:17:08 -04:00
|
|
|
delay: uint;
|
2018-07-06 11:27:36 -04:00
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
table TimerReady {
|
2018-07-06 11:27:36 -04:00
|
|
|
id: uint;
|
2018-09-05 22:13:36 -04:00
|
|
|
canceled: bool;
|
2018-07-06 11:27:36 -04:00
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
table TimerClear {
|
2018-07-06 11:27:36 -04:00
|
|
|
id: uint;
|
|
|
|
}
|
|
|
|
|
2018-08-31 07:51:12 -04:00
|
|
|
table Environ {}
|
|
|
|
|
|
|
|
table SetEnv {
|
2018-09-07 18:59:02 -04:00
|
|
|
key: string;
|
|
|
|
value: string;
|
2018-08-31 07:51:12 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
table EnvironRes {
|
2018-09-07 18:59:02 -04:00
|
|
|
map: [EnvPair];
|
2018-08-31 07:51:12 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
table EnvPair {
|
2018-09-07 18:59:02 -04:00
|
|
|
key: string;
|
|
|
|
value: string;
|
2018-08-31 07:51:12 -04:00
|
|
|
}
|
|
|
|
|
2018-07-06 11:27:36 -04:00
|
|
|
table FetchReq {
|
|
|
|
id: uint;
|
|
|
|
url: string;
|
|
|
|
// header_line: [string];
|
|
|
|
}
|
|
|
|
|
|
|
|
table FetchRes {
|
|
|
|
id: uint;
|
|
|
|
status: int;
|
2018-09-12 15:16:42 -04:00
|
|
|
header_key: [string];
|
|
|
|
header_value: [string];
|
2018-08-13 15:02:35 -04:00
|
|
|
body: [ubyte];
|
2018-07-06 11:27:36 -04:00
|
|
|
}
|
|
|
|
|
2018-08-23 18:36:45 -04:00
|
|
|
table MakeTempDir {
|
|
|
|
dir: string;
|
|
|
|
prefix: string;
|
|
|
|
suffix: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
table MakeTempDirRes {
|
|
|
|
path: string;
|
|
|
|
}
|
|
|
|
|
2018-09-10 05:48:36 -04:00
|
|
|
table Mkdir {
|
2018-08-26 02:26:30 -04:00
|
|
|
path: string;
|
|
|
|
mode: uint;
|
|
|
|
// mode specified by https://godoc.org/os#FileMode
|
|
|
|
}
|
|
|
|
|
2018-09-10 23:40:03 -04:00
|
|
|
table Remove {
|
|
|
|
path: string;
|
|
|
|
recursive: bool;
|
|
|
|
}
|
|
|
|
|
2018-09-09 20:25:43 -04:00
|
|
|
table ReadFile {
|
2018-07-06 11:27:36 -04:00
|
|
|
filename: string;
|
|
|
|
}
|
|
|
|
|
2018-09-09 20:25:43 -04:00
|
|
|
table ReadFileRes {
|
2018-08-13 15:02:35 -04:00
|
|
|
data: [ubyte];
|
2018-07-06 11:27:36 -04:00
|
|
|
}
|
|
|
|
|
2018-09-11 12:00:57 -04:00
|
|
|
table WriteFile {
|
|
|
|
filename: string;
|
|
|
|
data: [ubyte];
|
|
|
|
perm: uint;
|
|
|
|
// perm specified by https://godoc.org/os#FileMode
|
|
|
|
}
|
|
|
|
|
2018-09-12 11:44:58 -04:00
|
|
|
table Rename {
|
2018-09-03 20:22:30 -04:00
|
|
|
oldpath: string;
|
|
|
|
newpath: string;
|
|
|
|
}
|
|
|
|
|
2018-09-19 00:38:24 -04:00
|
|
|
table Symlink {
|
|
|
|
oldname: string;
|
|
|
|
newname: string;
|
|
|
|
}
|
|
|
|
|
2018-09-11 15:38:53 -04:00
|
|
|
table Stat {
|
2018-08-29 09:22:25 -04:00
|
|
|
filename: string;
|
|
|
|
lstat: bool;
|
|
|
|
}
|
|
|
|
|
2018-09-11 15:38:53 -04:00
|
|
|
table StatRes {
|
2018-08-29 09:22:25 -04:00
|
|
|
is_file: bool;
|
|
|
|
is_symlink: bool;
|
|
|
|
len: ulong;
|
|
|
|
modified:ulong;
|
|
|
|
accessed:ulong;
|
|
|
|
created:ulong;
|
2018-09-17 19:53:55 -04:00
|
|
|
mode: uint;
|
|
|
|
has_mode: bool; // false on windows
|
2018-08-29 09:22:25 -04:00
|
|
|
}
|
|
|
|
|
2018-08-13 19:55:10 -04:00
|
|
|
root_type Base;
|