添加获取语言配置接口

This commit is contained in:
MeiK 2021-02-02 15:25:58 +08:00
parent 085818abc1
commit e14068cff4
2 changed files with 35 additions and 1 deletions

View File

@ -3,6 +3,20 @@ package river;
service River {
rpc Judge(stream JudgeRequest) returns (stream JudgeResponse) {}
rpc LanguageConfig(Empty) returns (LanguageConfigResponse) {}
}
message Empty {
}
message LanguageItem {
string language = 1;
string compile = 2;
string run = 3;
}
message LanguageConfigResponse {
repeated LanguageItem languages = 1;
}
message CompileData {

View File

@ -7,7 +7,9 @@ use futures_core::Stream;
use log4rs;
use river::judge_request::Data;
use river::river_server::{River, RiverServer};
use river::{JudgeRequest, JudgeResponse, JudgeResultEnum};
use river::{
Empty, JudgeRequest, JudgeResponse, JudgeResultEnum, LanguageConfigResponse, LanguageItem,
};
use std::pin::Pin;
use tempfile::tempdir_in;
use tonic::transport::Server;
@ -103,6 +105,24 @@ impl River for RiverService {
Ok(Response::new(Box::pin(output) as Self::JudgeStream))
}
async fn language_config(
&self,
_request: Request<Empty>,
) -> Result<Response<LanguageConfigResponse>, Status> {
let mut languages: Vec<LanguageItem> = vec![];
for (key, value) in &config::CONFIG.languages {
languages.push(LanguageItem {
language: String::from(key),
compile: String::from(&value.compile_cmd),
run: String::from(&value.run_cmd),
});
}
let response = LanguageConfigResponse {
languages: languages,
};
Ok(Response::new(response))
}
}
#[tokio::main]