Skip to main content

server_watchdog/application/
server.rs

1use async_trait::async_trait;
2use tokio_stream::Stream;
3use crate::domain::server::{health::Health, Server};
4
5pub trait ServerRepository : Send + Sync {
6    fn find(&self, name: &str) -> Option<&Server>;
7    fn find_all(&self) -> Vec<&Server>;
8}
9
10#[async_trait]
11pub trait ServerManager : Send + Sync {
12    async fn kill(&self, name: &str) -> bool;
13    async fn healthcheck(&self, name: &str) -> Health;
14    async fn healthcheck_all(&self) -> Vec<(&str, Health)>;
15    async fn logs(&self, name: &str, n: i32) -> Option<String>;
16    async fn logs_stream(&self, name: &str) -> Option<Box<dyn Stream<Item=String> + Send>>;
17}