Update proto

This commit is contained in:
MeiK 2021-02-05 19:48:23 +08:00
parent ea413f0bf3
commit a379b61bc7
4 changed files with 27 additions and 7 deletions

View File

@ -7,12 +7,17 @@ service River {
rpc Ls(LsRequest) returns (LsResponse) {}
}
message LsCase {
string in = 1;
string out = 2;
}
message LsRequest {
string dir = 1;
int32 pid = 1;
}
message LsResponse {
repeated string files = 1;
repeated LsCase cases = 1;
}
message Empty {

1
runtime/data/1000/2.in Normal file
View File

@ -0,0 +1 @@
-1 -2

1
runtime/data/1000/2.out Normal file
View File

@ -0,0 +1 @@
-3

View File

@ -9,7 +9,7 @@ use river::judge_request::Data;
use river::river_server::{River, RiverServer};
use river::{
Empty, JudgeRequest, JudgeResponse, JudgeResultEnum, LanguageConfigResponse, LanguageItem,
LsRequest, LsResponse,
LsRequest, LsResponse, LsCase
};
use std::path::Path;
use std::pin::Pin;
@ -132,9 +132,9 @@ impl River for RiverService {
// TODO: 将获取文件的接口剥离出来,归入评测文件管理系统中
// TODO: 最终将会删除这个接口
// TODO: 目前有安全隐患,可以获取到任意目录文件
let dir = request.into_inner().dir;
let mut response = LsResponse { files: vec![] };
let directory_stream = match read_dir(Path::new("runtime/data").join(dir)).await {
let pid = request.into_inner().pid;
let mut response = LsResponse { cases: vec![] };
let directory_stream = match read_dir(Path::new("runtime/data").join(pid.to_string())).await {
Ok(val) => val,
Err(_) => return Ok(Response::new(response)),
};
@ -144,7 +144,20 @@ impl River for RiverService {
})
.collect()
.await;
response.files = files;
let mut iter = 1;
loop {
let in_file = format!("{}.in", iter);
let out_file = format!("{}.out", iter);
if files.contains(&in_file) && files.contains((&out_file)) {
response.cases.push(LsCase{
r#in: in_file,
out: out_file
});
iter += 1;
} else {
break;
}
}
Ok(Response::new(response))
}
}