shared state for grpc server
This commit is contained in:
parent
e1dbf5c899
commit
e76c9cc8cc
19
src/grpc.rs
19
src/grpc.rs
@ -1,27 +1,32 @@
|
|||||||
|
use std::sync::Arc;
|
||||||
use std::{net::SocketAddr, str::FromStr};
|
use std::{net::SocketAddr, str::FromStr};
|
||||||
|
use tokio::sync::RwLock;
|
||||||
use tonic::transport::Server;
|
use tonic::transport::Server;
|
||||||
|
|
||||||
use detee_shared::pb::daemon::daemon_service_server::{
|
use detee_shared::pb::daemon::daemon_service_server::{
|
||||||
DaemonService as DaemonServicePB, DaemonServiceServer as DaemonServiceServerPB,
|
DaemonService as DaemonServicePB, DaemonServiceServer as DaemonServiceServerPB,
|
||||||
};
|
};
|
||||||
|
|
||||||
use detee_shared::pb::daemon::NewContainerRes;
|
use detee_shared::pb::daemon::NewContainerRes;
|
||||||
use detee_shared::pb::shared::Container;
|
use detee_shared::pb::shared::Container;
|
||||||
pub struct DaemonServer {}
|
|
||||||
|
use crate::DaemonState;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct DaemonServer {
|
||||||
|
pub data: Arc<RwLock<DaemonState>>,
|
||||||
|
}
|
||||||
|
|
||||||
impl DaemonServer {
|
impl DaemonServer {
|
||||||
pub fn new() -> Self {
|
pub fn new(data: Arc<RwLock<DaemonState>>) -> Self {
|
||||||
Self {}
|
Self { data }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn start(&self) -> Result<(), Box<dyn std::error::Error>> {
|
pub async fn start(&self) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let port: String = std::env::var("PORT").unwrap_or_else(|_| "33400".to_string());
|
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 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);
|
println!("Listening on {}", addr);
|
||||||
|
|
||||||
|
12
src/main.rs
12
src/main.rs
@ -1,11 +1,21 @@
|
|||||||
mod grpc;
|
mod grpc;
|
||||||
|
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use grpc::DaemonServer;
|
use grpc::DaemonServer;
|
||||||
|
use tokio::sync::RwLock;
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct DaemonState {
|
||||||
|
pub containers: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
println!("Detee daemon");
|
println!("Detee daemon");
|
||||||
|
|
||||||
DaemonServer::new().start().await?;
|
DaemonServer::new(Arc::new(RwLock::new(DaemonState::default())))
|
||||||
|
.start()
|
||||||
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user