snarkos_utilities/
node_data.rs1use std::path::{Path, PathBuf};
17
18pub const GATEWAY_PEER_CACHE_FILE: &str = "gateway-peer-cache";
20pub const LEGACY_GATEWAY_PEER_CACHE_FILE: &str = "cached_gateway_peers";
22
23pub const ROUTER_PEER_CACHE_FILE: &str = "router-peer-cache";
25pub const LEGACY_ROUTER_PEER_CACHE_FILE: &str = "cached_router_peers";
27
28pub const CURRENT_PROPOSAL_CACHE_FILE: &str = "current-proposal-cache";
30
31#[cfg(feature = "test_network")]
33pub const DEV_COMMITTEE_STATE_FILE: &str = "dev-committee-state";
34
35pub fn jwt_secret_file<D: std::fmt::Display>(address: &D) -> PathBuf {
37 PathBuf::from(format!("jwt_secret_{address}.txt"))
38}
39
40pub fn legacy_current_proposal_cache_file(network: u16, dev: Option<u16>) -> PathBuf {
42 if let Some(dev) = dev {
43 PathBuf::from(format!(".current-proposal-cache-{network}-{dev}"))
44 } else {
45 PathBuf::from(format!("current-proposal-cache-{network}"))
46 }
47}
48
49#[derive(Clone, Debug, PartialEq, Eq)]
51pub struct NodeDataDir {
52 path: PathBuf,
53}
54
55impl NodeDataDir {
56 pub fn new(path: PathBuf) -> Self {
58 Self { path }
59 }
60
61 pub fn new_test(dev: Option<u16>) -> Self {
63 if let Some(dev) = dev {
64 Self { path: PathBuf::from(format!(".node-data-test-{dev}")) }
65 } else {
66 Self { path: PathBuf::from(".node-data-test") }
67 }
68 }
69
70 pub fn new_development(network: u16, dev: u16) -> Self {
72 let path = std::env::current_dir()
75 .unwrap_or(PathBuf::from(env!("CARGO_MANIFEST_DIR")))
76 .join(format!(".node-data-{network}-{dev}"));
77
78 Self::new(path)
79 }
80
81 pub fn path(&self) -> &Path {
82 &self.path
83 }
84
85 pub fn router_peer_cache_path(&self) -> PathBuf {
87 self.path.join(ROUTER_PEER_CACHE_FILE)
88 }
89
90 pub fn gateway_peer_cache_path(&self) -> PathBuf {
91 self.path.join(GATEWAY_PEER_CACHE_FILE)
92 }
93
94 pub fn current_proposal_cache_path(&self) -> PathBuf {
96 self.path.join(CURRENT_PROPOSAL_CACHE_FILE)
97 }
98
99 #[cfg(feature = "test_network")]
101 pub fn dev_committee_state_path(&self) -> PathBuf {
102 self.path.join(DEV_COMMITTEE_STATE_FILE)
103 }
104
105 pub fn jwt_secret_path<D: std::fmt::Display>(&self, address: &D) -> PathBuf {
107 self.path.join(jwt_secret_file(address))
108 }
109}