diff --git a/src/judge.rs b/src/judge.rs index 64ce80d..c6348ab 100644 --- a/src/judge.rs +++ b/src/judge.rs @@ -6,8 +6,9 @@ use tokio::{ fs, io::{AsyncReadExt, AsyncWriteExt}, }; +use uuid::Uuid; -use crate::{Language, Metrics, Resource, Sandbox, Verdict, util}; +use crate::{Language, Metrics, Resource, Sandbox, Verdict}; const MAIN: &str = "main"; const CHECKER: &str = "checker"; @@ -42,7 +43,7 @@ impl Judge { #[builder(default)] resource: Resource, #[builder(default)] time_limit: Duration, ) -> io::Result> { - let project_path = env::temp_dir().join(util::random(main.content).to_string()); + let project_path = env::temp_dir().join(Uuid::new_v4().to_string()); fs::create_dir(&project_path).await?; let main_path = project_path diff --git a/src/lib.rs b/src/lib.rs index 206dde8..65f1db5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,6 @@ mod judge; pub mod language; mod metrics; mod sandbox; -mod util; pub use judge::*; pub use language::Language; diff --git a/src/sandbox/resource.rs b/src/sandbox/resource.rs index 80dbc05..e90c83d 100644 --- a/src/sandbox/resource.rs +++ b/src/sandbox/resource.rs @@ -2,8 +2,7 @@ use std::{io, time::Duration}; use byte_unit::Byte; use cgroups_rs::fs::{Cgroup, cgroup_builder::CgroupBuilder, hierarchies}; - -use crate::util; +use uuid::Uuid; const PREFIX: &str = "judge"; @@ -28,7 +27,7 @@ impl TryFrom for Cgroup { type Error = io::Error; fn try_from(resource: Resource) -> Result { - let builder = CgroupBuilder::new(&format!("{}/{}", PREFIX, util::random(resource))); + let builder = CgroupBuilder::new(&format!("{}/{}", PREFIX, Uuid::new_v4())); let memory = resource.memory.as_u64() as i64; let builder = builder diff --git a/src/util.rs b/src/util.rs deleted file mode 100644 index fae314f..0000000 --- a/src/util.rs +++ /dev/null @@ -1,11 +0,0 @@ -use std::hash::{DefaultHasher, Hash, Hasher}; - -use uuid::Uuid; - -pub fn random(data: T) -> u64 { - let mut hasher = DefaultHasher::default(); - data.hash(&mut hasher); - Uuid::new_v4().hash(&mut hasher); - - hasher.finish() -}