mod http;
mod rtr;
use daemonbase::error::ExitError;
use serde::Deserialize;
use crate::manager::Component;
#[derive(Debug, Deserialize)]
#[serde(tag = "type")]
pub enum Target {
#[serde(rename = "rtr")]
RtrTcp(rtr::Tcp),
#[serde(rename = "rtr-tls")]
RtrTls(rtr::Tls),
#[serde(rename = "http")]
Http(http::Target),
#[cfg(test)]
#[serde(skip)]
Test(crate::test::Target)
}
impl Target {
pub async fn run(self, component: Component) -> Result<(), ExitError> {
match self {
Target::RtrTcp(target) => target.run(component).await,
Target::RtrTls(target) => target.run(component).await,
Target::Http(target) => target.run(component).await,
#[cfg(test)]
Target::Test(target) => target.run(component).await,
}
}
}