@@ -2,6 +2,7 @@ use std::fmt::Debug;
22use std:: path:: Path ;
33use std:: sync:: Arc ;
44
5+ use anyhow:: Context ;
56use async_trait:: async_trait;
67use futures:: TryFutureExt ;
78use log:: info;
@@ -120,23 +121,21 @@ pub trait Sandbox: Sync + Send {
120121 fn get_data ( & self ) -> Result < SandboxData > ;
121122}
122123
123- pub async fn run < S > ( name : & str , sandboxer : S ) -> Result < ( ) >
124+ pub async fn run < S > ( name : & str , listening_addr : & str , working_dir : & str , sandboxer : S ) -> Result < ( ) >
124125where
125126 S : Sandboxer + Sync + Send + ' static ,
126127{
127128 info ! ( "start sandbox plugin: {}" , name) ;
128- let os_args: Vec < _ > = std:: env:: args_os ( ) . collect ( ) ;
129- let flags = args:: parse ( & os_args[ 1 ..] ) ?;
130- if Path :: new ( & * flags. listen ) . exists ( ) {
131- tokio:: fs:: remove_file ( & * flags. listen ) . await . unwrap ( ) ;
129+ if Path :: new ( listening_addr) . exists ( ) {
130+ tokio:: fs:: remove_file ( listening_addr) . await ?;
132131 }
133132
134- if !Path :: new ( & * flags . dir ) . exists ( ) {
135- tokio:: fs:: create_dir_all ( & * flags . dir ) . await . unwrap ( ) ;
133+ if !Path :: new ( working_dir ) . exists ( ) {
134+ tokio:: fs:: create_dir_all ( working_dir ) . await ? ;
136135 }
137136
138137 let incoming = {
139- let uds = UnixListener :: bind ( & * flags . listen ) . unwrap ( ) ;
138+ let uds = UnixListener :: bind ( listening_addr ) ? ;
140139 async_stream:: stream! {
141140 loop {
142141 let item = uds. accept( ) . map_ok( |( st, _) |unix:: UnixStream ( st) ) . await ;
@@ -145,13 +144,13 @@ where
145144 }
146145 } ;
147146
148- let sandbox_controller = SandboxController :: new ( flags . dir , sandboxer) ;
147+ let sandbox_controller = SandboxController :: new ( working_dir . to_string ( ) , sandboxer) ;
149148 let sandbox_server = ControllerServer :: new ( sandbox_controller) ;
150149 Server :: builder ( )
151150 . add_service ( sandbox_server)
152151 . serve_with_incoming ( incoming)
153152 . await
154- . unwrap ( ) ;
153+ . with_context ( || format ! ( "gRPC server" ) ) ? ;
155154
156155 Ok ( ( ) )
157156}
0 commit comments