Skip to content

Commit ca3cc08

Browse files
committed
feat(rsjudge-judger): ✨ try to implement judge request module
1 parent 84f04f1 commit ca3cc08

File tree

8 files changed

+61
-3
lines changed

8 files changed

+61
-3
lines changed

Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/rsjudge-judger/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ rust-version.workspace = true
1111

1212
[dependencies]
1313
async-trait = "0.1.81"
14+
bytes = "1.6.1"
1415
futures = "0.3.30"
16+
rsjudge-traits.workspace = true
1517
rsjudge-utils.workspace = true
1618
tokio = { workspace = true, features = ["io-util", "fs", "macros"] }
1719

crates/rsjudge-judger/src/comparer/default_comparer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use futures::try_join;
99
use rsjudge_utils::trim_space_end;
1010
use tokio::io::{AsyncBufReadExt as _, AsyncRead, BufReader};
1111

12-
use crate::{CompareResult, Comparer};
12+
use crate::comparer::{CompareResult, Comparer};
1313

1414
/// A default comparer implementation with basic configurations.
1515
#[must_use = "Comparer makes no sense if it is not used"]
@@ -123,7 +123,7 @@ mod tests {
123123
io::{empty, AsyncWriteExt as _},
124124
};
125125

126-
use crate::{CompareResult, Comparer as _, DefaultComparer};
126+
use crate::comparer::{CompareResult, Comparer as _, DefaultComparer};
127127

128128
#[tokio::test]
129129
async fn compare_empty() -> io::Result<()> {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod request;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
use bytes::Bytes;
2+
3+
use crate::judger::request::{source::Source, test_cases::TestCases};
4+
5+
mod source;
6+
7+
mod test_cases;
8+
9+
pub struct JudgeRequest {
10+
source: Source,
11+
judge_type: JudgeType,
12+
}
13+
14+
impl JudgeRequest {
15+
pub fn new(source: Source, judge_type: JudgeType) -> Self {
16+
Self { source, judge_type }
17+
}
18+
19+
pub fn source(&self) -> &Source {
20+
&self.source
21+
}
22+
23+
pub fn judge_type(&self) -> &JudgeType {
24+
&self.judge_type
25+
}
26+
}
27+
28+
pub enum JudgeType {
29+
SelfTest { input: Bytes },
30+
Submit { cases: TestCases },
31+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use bytes::Bytes;
2+
use rsjudge_traits::language::option::LanguageOption;
3+
4+
pub struct Source {
5+
pub(crate) language: LanguageOption,
6+
pub(crate) code: Bytes,
7+
}
8+
9+
impl Source {
10+
pub fn new(language: LanguageOption, code: Bytes) -> Self {
11+
Self { language, code }
12+
}
13+
14+
pub fn language(&self) -> &LanguageOption {
15+
&self.language
16+
}
17+
18+
pub fn code(&self) -> &Bytes {
19+
&self.code
20+
}
21+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub struct TestCases {}

crates/rsjudge-judger/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44

55
pub mod comparer;
66

7-
pub use comparer::{CompareResult, Comparer, DefaultComparer};
7+
pub mod judger;

0 commit comments

Comments
 (0)