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