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) {}
|
rpc Ls(LsRequest) returns (LsResponse) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message LsCase {
|
||||||
|
string in = 1;
|
||||||
|
string out = 2;
|
||||||
|
}
|
||||||
|
|
||||||
message LsRequest {
|
message LsRequest {
|
||||||
string dir = 1;
|
int32 pid = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message LsResponse {
|
message LsResponse {
|
||||||
repeated string files = 1;
|
repeated LsCase cases = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Empty {
|
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::river_server::{River, RiverServer};
|
||||||
use river::{
|
use river::{
|
||||||
Empty, JudgeRequest, JudgeResponse, JudgeResultEnum, LanguageConfigResponse, LanguageItem,
|
Empty, JudgeRequest, JudgeResponse, JudgeResultEnum, LanguageConfigResponse, LanguageItem,
|
||||||
LsRequest, LsResponse,
|
LsRequest, LsResponse, LsCase
|
||||||
};
|
};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
@ -132,9 +132,9 @@ impl River for RiverService {
|
|||||||
// TODO: 将获取文件的接口剥离出来,归入评测文件管理系统中
|
// TODO: 将获取文件的接口剥离出来,归入评测文件管理系统中
|
||||||
// TODO: 最终将会删除这个接口
|
// TODO: 最终将会删除这个接口
|
||||||
// TODO: 目前有安全隐患,可以获取到任意目录文件
|
// TODO: 目前有安全隐患,可以获取到任意目录文件
|
||||||
let dir = request.into_inner().dir;
|
let pid = request.into_inner().pid;
|
||||||
let mut response = LsResponse { files: vec![] };
|
let mut response = LsResponse { cases: vec![] };
|
||||||
let directory_stream = match read_dir(Path::new("runtime/data").join(dir)).await {
|
let directory_stream = match read_dir(Path::new("runtime/data").join(pid.to_string())).await {
|
||||||
Ok(val) => val,
|
Ok(val) => val,
|
||||||
Err(_) => return Ok(Response::new(response)),
|
Err(_) => return Ok(Response::new(response)),
|
||||||
};
|
};
|
||||||
@ -144,7 +144,20 @@ impl River for RiverService {
|
|||||||
})
|
})
|
||||||
.collect()
|
.collect()
|
||||||
.await;
|
.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))
|
Ok(Response::new(response))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user