use crate::define::{SSScheme, SchemeKey};
use derive_builder::Builder;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Builder)]
#[builder(setter(into))]
pub struct SourceRelay {
    source_id: String,
    relay_id: String,
    #[builder(default)]
    meta: String,
    scheme: SSScheme,
    relay_ip: String,
    #[builder(default)]
    muxer_config: String,
}

impl SourceRelay {
    pub fn source_id(&self) -> &str {
        &self.source_id
    }
    pub fn scheme_key(&self) -> SchemeKey {
        SchemeKey::new(self.scheme, &self.muxer_config)
    }
    pub fn relay_id(&self) -> &str {
        &self.relay_id
    }
    pub fn meta(&self) -> &str {
        &self.meta
    }
    pub fn scheme(&self) -> SSScheme {
        self.scheme
    }
    pub fn relay_ip(&self) -> &str {
        &self.relay_ip
    }
    pub fn muxer_config(&self) -> &str {
        &self.muxer_config
    }
}