RircdState::run()
This commit is contained in:
parent
e399e302c4
commit
21f4282cca
|
@ -1,8 +1,12 @@
|
||||||
|
use eyre::Result;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
|
use tokio::sync::oneshot;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
pub trait Endpoint {
|
pub trait Endpoint {
|
||||||
fn name(&self) -> String;
|
fn name(&self) -> String;
|
||||||
|
fn is_active(&self) -> bool;
|
||||||
|
async fn listen(self: Arc<Self>, success_status_send: oneshot::Sender<Result<()>>);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,5 +12,7 @@ use state::RircdState;
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
let s = RircdState::new()?;
|
let s = RircdState::new()?;
|
||||||
|
|
||||||
|
s.run().await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
22
src/state.rs
22
src/state.rs
|
@ -1,6 +1,8 @@
|
||||||
use eyre::Result;
|
use eyre::Result;
|
||||||
|
use async_trait::async_trait;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use tokio::sync::oneshot;
|
||||||
|
|
||||||
use crate::endpoint::Endpoint;
|
use crate::endpoint::Endpoint;
|
||||||
|
|
||||||
|
@ -25,4 +27,24 @@ impl RircdState {
|
||||||
postgres_log: None,
|
postgres_log: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO impl
|
||||||
|
pub fn from_config(config: String) -> Result<Self> {
|
||||||
|
Self::new()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn run(mut self) -> Result<()> {
|
||||||
|
for endpoint in self.endpoints {
|
||||||
|
let endpoint_name = endpoint.name();
|
||||||
|
let (success_status_send,success_status_recv) = oneshot::channel::<Result<()>>();
|
||||||
|
tokio::spawn(endpoint.listen(success_status_send));
|
||||||
|
//TODO color err msg
|
||||||
|
println!("starting {} | {}", endpoint_name,
|
||||||
|
match success_status_recv.await {
|
||||||
|
Ok(_) => format!("SUCCEEDED |"),
|
||||||
|
Err(e) => format!("FAILED| <{}>", e),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue