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";
30pub const VALIDATOR_WHITELIST_FILE: &str = "validator-whitelist";
32
33pub fn jwt_secret_file<D: std::fmt::Display>(address: &D) -> PathBuf {
35 PathBuf::from(format!("jwt_secret_{address}.txt"))
36}
37
38pub fn legacy_current_proposal_cache_file(network: u16, dev: Option<u16>) -> PathBuf {
40 if let Some(dev) = dev {
41 PathBuf::from(format!(".current-proposal-cache-{network}-{dev}"))
42 } else {
43 PathBuf::from(format!("current-proposal-cache-{network}"))
44 }
45}
46
47#[derive(Clone, Debug, PartialEq, Eq)]
49pub struct NodeDataDir {
50 path: PathBuf,
51}
52
53impl NodeDataDir {
54 pub fn new(path: PathBuf) -> Self {
56 Self { path }
57 }
58
59 pub fn new_test(dev: Option<u16>) -> Self {
61 if let Some(dev) = dev {
62 Self { path: PathBuf::from(format!(".node-data-test-{dev}")) }
63 } else {
64 Self { path: PathBuf::from(".node-data-test") }
65 }
66 }
67
68 pub fn new_development(network: u16, dev: u16) -> Self {
70 let path = std::env::current_dir()
73 .unwrap_or(PathBuf::from(env!("CARGO_MANIFEST_DIR")))
74 .join(format!(".node-data-{network}-{dev}"));
75
76 Self::new(path)
77 }
78
79 pub fn path(&self) -> &Path {
80 &self.path
81 }
82
83 pub fn router_peer_cache_path(&self) -> PathBuf {
85 self.path.join(ROUTER_PEER_CACHE_FILE)
86 }
87
88 pub fn gateway_peer_cache_path(&self) -> PathBuf {
89 self.path.join(GATEWAY_PEER_CACHE_FILE)
90 }
91
92 pub fn validator_whitelist_path(&self) -> PathBuf {
93 self.path.join(VALIDATOR_WHITELIST_FILE)
94 }
95
96 pub fn current_proposal_cache_path(&self) -> PathBuf {
98 self.path.join(CURRENT_PROPOSAL_CACHE_FILE)
99 }
100
101 pub fn jwt_secret_path<D: std::fmt::Display>(&self, address: &D) -> PathBuf {
103 self.path.join(jwt_secret_file(address))
104 }
105}