diff --git a/src/grpc.rs b/src/grpc.rs index f109a14..ded8dc2 100644 --- a/src/grpc.rs +++ b/src/grpc.rs @@ -1,27 +1,32 @@ +use std::sync::Arc; use std::{net::SocketAddr, str::FromStr}; - +use tokio::sync::RwLock; use tonic::transport::Server; use detee_shared::pb::daemon::daemon_service_server::{ DaemonService as DaemonServicePB, DaemonServiceServer as DaemonServiceServerPB, }; - use detee_shared::pb::daemon::NewContainerRes; use detee_shared::pb::shared::Container; -pub struct DaemonServer {} + +use crate::DaemonState; + +#[derive(Debug, Clone)] +pub struct DaemonServer { + pub data: Arc>, +} impl DaemonServer { - pub fn new() -> Self { - Self {} + pub fn new(data: Arc>) -> Self { + Self { data } } pub async fn start(&self) -> Result<(), Box> { let port: String = std::env::var("PORT").unwrap_or_else(|_| "33400".to_string()); - let data = Self {}; let addr = SocketAddr::from_str(format!("0.0.0.0:{port}").as_str())?; - let daemon_server = DaemonServiceServerPB::new(data); + let daemon_server = DaemonServiceServerPB::new(DaemonServer::new(self.data.clone())); println!("Listening on {}", addr); diff --git a/src/main.rs b/src/main.rs index 0a22c92..339e570 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,21 @@ mod grpc; +use std::sync::Arc; + use grpc::DaemonServer; +use tokio::sync::RwLock; + +#[derive(Debug, Default)] +pub struct DaemonState { + pub containers: Vec, +} #[tokio::main] async fn main() -> Result<(), Box> { println!("Detee daemon"); - DaemonServer::new().start().await?; + DaemonServer::new(Arc::new(RwLock::new(DaemonState::default()))) + .start() + .await?; Ok(()) }