@@ -74,7 +74,7 @@ pub trait JudgeResponseCallbacks: Send + Sync {
7474
7575#[ derive( Clone ) ]
7676pub struct Controller {
77- invoker_set : Arc < InvokerSet > ,
77+ invoker_set : InvokerSet ,
7878 problem_loader : Arc < problem_loader:: Loader > ,
7979 toolchains_dir : Arc < Path > ,
8080 _config : Arc < crate :: config:: JudgeConfig > ,
@@ -102,15 +102,17 @@ impl Controller {
102102 None => get_num_cpus ( ) ,
103103 } ;
104104 info ! ( "Using {} workers" , worker_count) ;
105- let mut invoker_set =
106- InvokerSet :: new ( & config) . context ( "failed to initialize InvokerSet" ) ?;
107- for _ in 0 ..worker_count {
108- invoker_set
109- . add_managed_worker ( )
110- . await
111- . context ( "failed to start a worker" ) ?;
112- }
113- let invoker_set = Arc :: new ( invoker_set) ;
105+
106+ let invoker_set = {
107+ let mut builder = InvokerSet :: builder ( & config) ;
108+ for _ in 0 ..worker_count {
109+ builder
110+ . add_managed_worker ( )
111+ . await
112+ . context ( "failed to start a worker" ) ?;
113+ }
114+ builder. build ( )
115+ } ;
114116
115117 let temp_dir = tempfile:: TempDir :: new ( ) . context ( "can not find temporary dir" ) ?;
116118
@@ -158,10 +160,13 @@ impl Controller {
158160
159161 debug ! ( lowered_judge_request = ?low_req, "created a lowered judge request" ) ;
160162
161- // TODO currently the process of finding a worker is unfair
162- // we should fix it e.g. using a semaphore which permits finding
163- // worker.
164- let worker = self . invoker_set . find_free_worker ( ) . await ;
163+ let ( judge_events_tx, judge_events_rx) = async_channel:: bounded ( 1 ) ;
164+ let engine = self . invoker_set . clone ( ) ;
165+ let judge_cx = crate :: request_handler:: JudgeContext {
166+ events_tx : judge_events_tx,
167+ invoker : rpc:: Client :: new ( rpc:: box_engine ( engine) , "http://does-not-matter" . to_string ( ) ) ,
168+ } ;
169+
165170 // TODO: can we split into LoweredJudgeRequest and Extensions?
166171 let mut responses = worker
167172 . send ( Request :: Judge ( low_req) )
0 commit comments