river/proto/river.proto
2020-10-22 10:01:18 +00:00

75 lines
1.1 KiB
Protocol Buffer

syntax = "proto3";
package river;
service River {
rpc Judge(stream JudgeRequest) returns (stream JudgeResponse) {}
}
message CompileData {
bytes code = 1;
}
message JudgeData {
bytes in_data = 1;
bytes out_data = 2;
int32 time_limit = 3;
int32 memory_limit = 4;
}
enum Language {
C = 0;
Cpp = 1;
Python = 2;
Rust = 3;
Node = 4;
TypeScript = 5;
Go = 6;
}
enum JudgeType {
Standard = 0;
// Special = 1;
}
message JudgeRequest {
Language language = 1;
JudgeType judge_type = 2;
oneof data {
CompileData compile_data = 3;
JudgeData judge_data = 4;
}
}
enum JudgeResult {
Accepted = 0;
WrongAnswer = 1;
TimeLimitExceeded = 2;
MemoryLimitExceeded = 3;
RuntimeError = 4;
OutputLimitExceeded = 5;
CompileError = 6;
PresentationError = 7;
SystemError = 8;
}
enum JudgeStatus {
Pending = 0;
Running = 1;
Ended = 2;
}
message JudgeResponse {
int64 time_used = 1;
int64 memory_used = 2;
oneof state {
JudgeResult result = 3;
JudgeStatus status = 9;
}
// int32 errno = 4;
// int32 exit_code = 5;
// string stdout = 6;
// string stderr = 7;
string errmsg = 8;
}