From df33010fb24b6cb75ab9d84f7d7ca1b8612ff03b Mon Sep 17 00:00:00 2001 From: Gaius Date: Tue, 19 Dec 2023 20:53:21 +0800 Subject: [PATCH] feat: add seed peer tag to IDGenerator (#154) Signed-off-by: Gaius --- src/bin/dfdaemon/main.rs | 1 + src/utils/id_generator.rs | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/bin/dfdaemon/main.rs b/src/bin/dfdaemon/main.rs index 2b798463..769d38c5 100644 --- a/src/bin/dfdaemon/main.rs +++ b/src/bin/dfdaemon/main.rs @@ -97,6 +97,7 @@ async fn main() -> Result<(), anyhow::Error> { let id_generator = IDGenerator::new( config.host.ip.unwrap().to_string(), config.host.hostname.clone(), + config.seed_peer.enable, ); let id_generator = Arc::new(id_generator); diff --git a/src/utils/id_generator.rs b/src/utils/id_generator.rs index 440e2e2f..a8a57255 100644 --- a/src/utils/id_generator.rs +++ b/src/utils/id_generator.rs @@ -26,17 +26,28 @@ pub struct IDGenerator { // hostname is the hostname of the host. hostname: String, + + // is_seed_peer indicates whether the host is a seed peer. + is_seed_peer: bool, } // IDGenerator implements the IDGenerator. impl IDGenerator { // new creates a new IDGenerator. - pub fn new(ip: String, hostname: String) -> Self { - IDGenerator { ip, hostname } + pub fn new(ip: String, hostname: String, is_seed_peer: bool) -> Self { + IDGenerator { + ip, + hostname, + is_seed_peer, + } } // host_id generates the host id. pub fn host_id(&self) -> String { + if self.is_seed_peer { + return format!("{}-{}-{}", self.ip, self.hostname, "seed"); + } + format!("{}-{}", self.ip, self.hostname) } @@ -88,6 +99,16 @@ impl IDGenerator { // peer_id generates the peer id. pub fn peer_id(&self) -> String { + if self.is_seed_peer { + return format!( + "{}-{}-{}-{}", + self.ip, + self.hostname, + "seed", + Uuid::new_v4() + ); + } + format!("{}-{}-{}", self.ip, self.hostname, Uuid::new_v4()) } }