summaryrefslogtreecommitdiffstats
path: root/src/service/tcp.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-09-26 17:31:16 -0500
committerToby Vincent <tobyv@tobyvin.dev>2024-09-26 17:31:16 -0500
commitfd992d7e3c03f37fbcafe9d3f26c72a2ead3b2a7 (patch)
treef3e29427d1bbe4a8d6e050abbd9f66afb5fa2152 /src/service/tcp.rs
parentcbfca14b38806798847e3f2008038b25194a9b8b (diff)
feat!: impl full api
Diffstat (limited to 'src/service/tcp.rs')
-rw-r--r--src/service/tcp.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/service/tcp.rs b/src/service/tcp.rs
new file mode 100644
index 0000000..5f55091
--- /dev/null
+++ b/src/service/tcp.rs
@@ -0,0 +1,28 @@
+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<Check, Error> {
+ Ok(std::net::TcpStream::connect(&self.address)
+ .err()
+ .map(|err| Check {
+ status: Status::Fail,
+ output: Some(format!("error: {err}")),
+ })
+ .unwrap_or_default())
+ }
+}