adds initial user defined panels
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
mod grpc;
|
||||
mod http;
|
||||
mod panels;
|
||||
mod serialization;
|
||||
mod telemetry;
|
||||
mod uuid;
|
||||
@@ -8,9 +9,13 @@ pub mod core {
|
||||
tonic::include_proto!("core");
|
||||
}
|
||||
|
||||
use crate::panels::PanelService;
|
||||
use crate::telemetry::history::TelemetryHistoryService;
|
||||
use crate::telemetry::management_service::TelemetryManagementService;
|
||||
use log::error;
|
||||
use log::{error, info};
|
||||
use sqlx::sqlite::SqliteConnectOptions;
|
||||
use sqlx::SqlitePool;
|
||||
use std::path;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use tokio::time::sleep;
|
||||
@@ -26,18 +31,36 @@ pub async fn setup() -> anyhow::Result<()> {
|
||||
});
|
||||
}
|
||||
|
||||
let data_folder = path::absolute("data")?;
|
||||
let telemetry_folder = data_folder.join("telemetry");
|
||||
|
||||
let database_url = data_folder.join("database.db");
|
||||
|
||||
info!("Opening Database: {database_url:?}");
|
||||
let sqlite = SqlitePool::connect_with(
|
||||
SqliteConnectOptions::new()
|
||||
.filename(database_url)
|
||||
.create_if_missing(true),
|
||||
)
|
||||
.await?;
|
||||
sqlx::migrate!().run(&sqlite).await?;
|
||||
|
||||
let tlm = Arc::new(TelemetryManagementService::new(
|
||||
TelemetryHistoryService::new()?,
|
||||
TelemetryHistoryService::new(telemetry_folder)?,
|
||||
)?);
|
||||
|
||||
let grpc_server = grpc::setup(cancellation_token.clone(), tlm.clone())?;
|
||||
|
||||
let result = http::setup(cancellation_token.clone(), tlm.clone()).await;
|
||||
let panel_service = PanelService::new(sqlite.clone());
|
||||
|
||||
let result = http::setup(cancellation_token.clone(), tlm.clone(), panel_service).await;
|
||||
cancellation_token.cancel();
|
||||
result?; // result is dropped
|
||||
grpc_server.await?; //grpc server is dropped
|
||||
drop(cancellation_token); // All cancellation tokens are now dropped
|
||||
|
||||
sqlite.close().await;
|
||||
|
||||
// Perform cleanup functions - at this point all servers have stopped and we can be sure that cleaning things up is safe
|
||||
for _ in 0..15 {
|
||||
if Arc::strong_count(&tlm) != 1 {
|
||||
|
||||
Reference in New Issue
Block a user