ソースを参照

net3: update settings struct

ghassmo 4 年 前
コミット
eca51afd88
2 ファイル変更61 行追加15 行削除
  1. 4 3
      Cargo.toml
  2. 57 12
      src/net3/settings.rs

+ 4 - 3
Cargo.toml

@@ -19,12 +19,12 @@ name = "darkfi"
 [workspace]
 members = [
 	"bin/zkas",
-	#"bin/cashierd",
-	#"bin/darkfid",
+#"bin/cashierd",
+#"bin/darkfid",
 	"bin/darkfid2",
 	"bin/drk",
 	"bin/faucetd",
-	#"bin/gatewayd",
+#"bin/gatewayd",
 	"bin/ircd",
 	"bin/dnetview",
 	"bin/daod",
@@ -233,6 +233,7 @@ net3 = [
 	"regex",
 	"rustls-pemfile",
 	"structopt",
+	"structopt-toml",
 
 	"util",
 	"system",

+ 57 - 12
src/net3/settings.rs

@@ -2,34 +2,24 @@ use std::sync::Arc;
 
 use serde::Deserialize;
 use structopt::StructOpt;
+use structopt_toml::StructOptToml;
 use url::Url;
 
 /// Atomic pointer to network settings.
 pub type SettingsPtr = Arc<Settings>;
 
 /// Defines the network settings.
-#[derive(Clone, Debug, Deserialize, StructOpt)]
-#[structopt()]
+#[derive(Clone, Debug)]
 pub struct Settings {
-    #[structopt(short, long)]
     pub inbound: Option<Url>,
-    #[structopt(long, default_value = "0")]
     pub outbound_connections: u32,
-    #[structopt(long, default_value = "0")]
     pub manual_attempt_limit: u32,
-    #[structopt(long, default_value = "8")]
     pub seed_query_timeout_seconds: u32,
-    #[structopt(long, default_value = "10")]
     pub connect_timeout_seconds: u32,
-    #[structopt(long, default_value = "4")]
     pub channel_handshake_seconds: u32,
-    #[structopt(long, default_value = "10")]
     pub channel_heartbeat_seconds: u32,
-    #[structopt(short, long)]
     pub external_addr: Option<Url>,
-    #[structopt(short, long)]
     pub peers: Vec<Url>,
-    #[structopt(short, long)]
     pub seeds: Vec<Url>,
 }
 
@@ -49,3 +39,58 @@ impl Default for Settings {
         }
     }
 }
+
+/// Defines the network settings.
+#[derive(Clone, Debug, Deserialize, StructOpt, StructOptToml)]
+#[structopt()]
+pub struct SettingsOpt {
+    /// P2P accept address
+    #[structopt(long = "accept")]
+    pub inbound: Option<Url>,
+
+    /// Connection slots
+    #[structopt(long = "slots")]
+    pub outbound_connections: Option<u32>,
+
+    /// P2P external address
+    #[structopt(long)]
+    pub external_addr: Option<Url>,
+
+    /// Peer nodes to connect to
+    #[serde(default)]
+    #[structopt(long)]
+    pub peers: Vec<Url>,
+
+    /// Seed nodes to connect to
+    #[serde(default)]
+    #[structopt(long)]
+    pub seeds: Vec<Url>,
+
+    #[structopt(skip)]
+    pub manual_attempt_limit: Option<u32>,
+    #[structopt(skip)]
+    pub seed_query_timeout_seconds: Option<u32>,
+    #[structopt(skip)]
+    pub connect_timeout_seconds: Option<u32>,
+    #[structopt(skip)]
+    pub channel_handshake_seconds: Option<u32>,
+    #[structopt(skip)]
+    pub channel_heartbeat_seconds: Option<u32>,
+}
+
+impl Into<Settings> for SettingsOpt {
+    fn into(self) -> Settings {
+        Settings {
+            inbound: self.inbound,
+            outbound_connections: self.outbound_connections.unwrap_or(0),
+            manual_attempt_limit: self.manual_attempt_limit.unwrap_or(0),
+            seed_query_timeout_seconds: self.seed_query_timeout_seconds.unwrap_or(8),
+            connect_timeout_seconds: self.connect_timeout_seconds.unwrap_or(10),
+            channel_handshake_seconds: self.channel_handshake_seconds.unwrap_or(4),
+            channel_heartbeat_seconds: self.channel_heartbeat_seconds.unwrap_or(10),
+            external_addr: self.external_addr,
+            peers: self.peers,
+            seeds: self.seeds,
+        }
+    }
+}