use crate::discovery_etcd::{EtcdDiscoveryConfig, EtcdDiscoveryError, EtcdDiscoveryResult};
#[derive(Debug, Clone)]
pub struct EtcdClientFactory {
config: EtcdDiscoveryConfig,
}
impl EtcdClientFactory {
pub fn new(config: EtcdDiscoveryConfig) -> EtcdDiscoveryResult<Self> {
if config.endpoints.is_empty() {
return Err(EtcdDiscoveryError::MissingEndpoint);
}
Ok(Self { config })
}
pub fn endpoints(&self) -> &[String] {
&self.config.endpoints
}
#[cfg(feature = "discovery-etcd")]
pub async fn connect(&self) -> EtcdDiscoveryResult<etcd_client::Client> {
etcd_client::Client::connect(self.config.endpoints.clone(), None)
.await
.map_err(|error| EtcdDiscoveryError::Backend(error.to_string()))
}
}