mod data; mod grpc; use data::BrainData; use detee_shared::pb::daemon::brain_sgx_daemon_server::BrainSgxDaemonServer; use grpc::snp_proto::brain_cli_server::BrainCliServer; use grpc::snp_proto::brain_daemon_server::BrainDaemonServer; use grpc::BrainCliMock; use grpc::BrainDaemonMock; use grpc::BrainSgxCliMock; use grpc::BrainSgxDaemonMock; use std::sync::Arc; use tonic::transport::Server; use detee_shared::pb::daemon::brain_sgx_cli_server::BrainSgxCliServer; #[tokio::main] async fn main() { env_logger::builder() .filter_level(log::LevelFilter::Debug) .init(); let data = Arc::new(BrainData::new()); let data_clone = data.clone(); tokio::spawn(async move { loop { tokio::time::sleep(tokio::time::Duration::from_secs(60)).await; data_clone.contracts_cron(); } }); let addr = "0.0.0.0:31337".parse().unwrap(); let daemon_server = BrainDaemonServer::new(BrainDaemonMock::new(data.clone())); let cli_server = BrainCliServer::new(BrainCliMock::new(data.clone())); let sgx_cli_server = BrainSgxCliServer::new(BrainSgxCliMock::new(data.clone())); let sgx_daemon_server = BrainSgxDaemonServer::new(BrainSgxDaemonMock::new(data.clone())); Server::builder() .add_service(daemon_server) .add_service(cli_server) .add_service(sgx_cli_server) .add_service(sgx_daemon_server) .serve(addr) .await .unwrap(); }