mirror of
https://github.com/MeiK2333/river.git
synced 2025-11-04 14:49:40 +08:00
Update proto
This commit is contained in:
parent
ea413f0bf3
commit
a379b61bc7
@ -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
1
runtime/data/1000/2.in
Normal file
@ -0,0 +1 @@
|
||||
-1 -2
|
||||
1
runtime/data/1000/2.out
Normal file
1
runtime/data/1000/2.out
Normal file
@ -0,0 +1 @@
|
||||
-3
|
||||
23
src/main.rs
23
src/main.rs
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user