Răsfoiți Sursa

add slabstore_path to program options for services

ghassmo 5 ani în urmă
părinte
comite
557fe995ae
3 a modificat fișierele cu 17 adăugiri și 4 ștergeri
  1. 2 1
      src/bin/gatewayd.rs
  2. 2 2
      src/service/gateway.rs
  3. 13 1
      src/service/options.rs

+ 2 - 1
src/bin/gatewayd.rs

@@ -19,8 +19,9 @@ fn setup_addr(address: Option<SocketAddr>, default: SocketAddr) -> SocketAddr {
 async fn start(executor: Arc<Executor<'_>>, options: ProgramOptions) -> Result<()> {
 async fn start(executor: Arc<Executor<'_>>, options: ProgramOptions) -> Result<()> {
     let accept_addr: SocketAddr = setup_addr(options.accept_addr, "127.0.0.1:3333".parse()?);
     let accept_addr: SocketAddr = setup_addr(options.accept_addr, "127.0.0.1:3333".parse()?);
     let pub_addr: SocketAddr = setup_addr(options.pub_addr, "127.0.0.1:4444".parse()?);
     let pub_addr: SocketAddr = setup_addr(options.pub_addr, "127.0.0.1:4444".parse()?);
+    let slabstore_path = options.slabstore_path.as_path();
 
 
-    let gateway = GatewayService::new(accept_addr, pub_addr)?;
+    let gateway = GatewayService::new(accept_addr, pub_addr, slabstore_path)?;
 
 
     gateway.start(executor.clone()).await?;
     gateway.start(executor.clone()).await?;
     Ok(())
     Ok(())

+ 2 - 2
src/service/gateway.rs

@@ -35,8 +35,8 @@ pub struct GatewayService {
 }
 }
 
 
 impl GatewayService {
 impl GatewayService {
-    pub fn new(addr: SocketAddr, pub_addr: SocketAddr) -> Result<Arc<GatewayService>> {
-        let slabstore = SlabStore::new(Path::new("slabstore.db"))?;
+    pub fn new(addr: SocketAddr, pub_addr: SocketAddr, slabstore_path: &Path) -> Result<Arc<GatewayService>> {
+        let slabstore = SlabStore::new(slabstore_path)?;
 
 
         Ok(Arc::new(GatewayService {
         Ok(Arc::new(GatewayService {
             slabstore,
             slabstore,

+ 13 - 1
src/service/options.rs

@@ -5,6 +5,7 @@ pub struct ProgramOptions {
     pub accept_addr: Option<SocketAddr>,
     pub accept_addr: Option<SocketAddr>,
     pub pub_addr: Option<SocketAddr>,
     pub pub_addr: Option<SocketAddr>,
     pub verbose: bool,
     pub verbose: bool,
+    pub slabstore_path: Box<std::path::PathBuf>,
     pub log_path: Box<std::path::PathBuf>,
     pub log_path: Box<std::path::PathBuf>,
 }
 }
 
 
@@ -17,6 +18,7 @@ impl ProgramOptions {
             (@arg ACCEPT: -a --accept +takes_value "Accept add//ress")
             (@arg ACCEPT: -a --accept +takes_value "Accept add//ress")
             (@arg PUB_ADDR: -p --pubaddr +takes_value "Publisher addr")
             (@arg PUB_ADDR: -p --pubaddr +takes_value "Publisher addr")
             (@arg VERBOSE: -v --verbose "Increase verbosity")
             (@arg VERBOSE: -v --verbose "Increase verbosity")
+            (@arg SLABSTORE_PATH: --slabstore +takes_value "slabstore path")
             (@arg LOG_PATH: --log +takes_value "Logfile path")
             (@arg LOG_PATH: --log +takes_value "Logfile path")
         )
         )
         .get_matches();
         .get_matches();
@@ -35,6 +37,15 @@ impl ProgramOptions {
 
 
         let verbose = app.is_present("VERBOSE");
         let verbose = app.is_present("VERBOSE");
 
 
+        let slabstore_path = Box::new(
+            if let Some(slabstore_path) = app.value_of("SLABSTORE_PATH") {
+                std::path::Path::new(slabstore_path)
+            } else {
+                std::path::Path::new("slabstore.db")
+            }
+            .to_path_buf(),
+        );
+
         let log_path = Box::new(
         let log_path = Box::new(
             if let Some(log_path) = app.value_of("LOG_PATH") {
             if let Some(log_path) = app.value_of("LOG_PATH") {
                 std::path::Path::new(log_path)
                 std::path::Path::new(log_path)
@@ -48,6 +59,7 @@ impl ProgramOptions {
             accept_addr,
             accept_addr,
             pub_addr,
             pub_addr,
             verbose,
             verbose,
+            slabstore_path,
             log_path,
             log_path,
         })
         })
     }
     }
@@ -66,7 +78,7 @@ impl ClientProgramOptions {
         let app = clap_app!(dfi =>
         let app = clap_app!(dfi =>
             (version: "0.1.0")
             (version: "0.1.0")
             (author: "Amir Taaki <amir@dyne.org>")
             (author: "Amir Taaki <amir@dyne.org>")
-            (about: "run service daemon")
+            (about: "Run Service Client")
             (@arg CONNECT: -c --connect +takes_value "Connect add//ress")
             (@arg CONNECT: -c --connect +takes_value "Connect add//ress")
             (@arg SUB_ADDR: -s --subaddr +takes_value "Subscriber addr")
             (@arg SUB_ADDR: -s --subaddr +takes_value "Subscriber addr")
             (@arg VERBOSE: -v --verbose "Increase verbosity")
             (@arg VERBOSE: -v --verbose "Increase verbosity")