use std::fmt::Display; use serde::Deserialize; use crate::{Check, Error, Status}; #[derive(Debug, Clone, Deserialize)] pub struct Tcp { pub address: String, } impl Display for Tcp { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "tcp://{}", self.address) } } impl Tcp { pub async fn check(&self) -> Result { Ok(std::net::TcpStream::connect(&self.address) .err() .map(|err| Check { status: Status::Fail, output: Some(format!("error: {err}")), }) .unwrap_or_default()) } }