gwyh 0.1.0

gwyh is a sweet gossip library
Documentation
use uuid::Uuid;

use crate::DistributionStrategy;

#[derive(Debug, Clone)]
pub struct NodeInfo {
    bind_addr: String,
    keys: Vec<String>,
    peers: Vec<String>,
    id: Uuid,
    peer_subscriptions: usize,
    zone: Option<String>,
    distribution_strategy: DistributionStrategy,
}

impl NodeInfo {
    pub fn new(
        bind_addr: String,
        keys: Vec<String>,
        peers: Vec<String>,
        peer_subscriptions: usize,
        zone: Option<String>,
        distribution_strategy: DistributionStrategy,
    ) -> Self {
        Self {
            bind_addr,
            keys,
            peers,
            id: Uuid::new_v4(),
            peer_subscriptions,
            zone,
            distribution_strategy,
        }
    }

    pub fn bind_addr(&self) -> &str {
        self.bind_addr.as_ref()
    }

    pub fn keys(&self) -> &[String] {
        self.keys.as_ref()
    }

    pub fn peers(&self) -> &[String] {
        self.peers.as_ref()
    }

    pub fn id(&self) -> &Uuid {
        &self.id
    }

    pub fn peer_subscriptions(&self) -> usize {
        self.peer_subscriptions
    }

    pub fn zone(&self) -> &Option<String> {
        &self.zone
    }

    pub fn distribution_strategy(&self) -> &DistributionStrategy {
        &self.distribution_strategy
    }
}