initial graph
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
use std::error::Error;
|
||||
use std::pin::Pin;
|
||||
use std::sync::Arc;
|
||||
use chrono::{DateTime, SecondsFormat};
|
||||
use log::{error, trace};
|
||||
use tokio::select;
|
||||
use tokio::sync::mpsc;
|
||||
@@ -13,7 +14,7 @@ use tonic::transport::Server;
|
||||
use crate::core::telemetry_service_server::{TelemetryService, TelemetryServiceServer};
|
||||
use crate::core::{TelemetryDataType, TelemetryDefinitionRequest, TelemetryDefinitionResponse, TelemetryInsertResponse, TelemetryItem, TelemetryValue, Uuid};
|
||||
use crate::core::telemetry_value::Value;
|
||||
use crate::telemetry::{TelemetryDataValue, TelemetryManagementService};
|
||||
use crate::telemetry::{TelemetryDataItem, TelemetryDataValue, TelemetryManagementService};
|
||||
|
||||
pub struct CoreTelemetryService {
|
||||
pub tlm_management: Arc<TelemetryManagementService>,
|
||||
@@ -89,6 +90,10 @@ impl CoreTelemetryService {
|
||||
return Err(Status::failed_precondition("Value Missing"));
|
||||
};
|
||||
|
||||
let Some(timestamp) = tlm_item.timestamp else {
|
||||
return Err(Status::failed_precondition("Timestamp Missing"));
|
||||
};
|
||||
|
||||
let expected_type = match value {
|
||||
Value::Float32(_) => TelemetryDataType::Float32,
|
||||
Value::Float64(_) => TelemetryDataType::Float64,
|
||||
@@ -97,9 +102,16 @@ impl CoreTelemetryService {
|
||||
return Err(Status::failed_precondition("Data Type Mismatch"));
|
||||
};
|
||||
|
||||
let _ = tlm_data.data.send_replace(Some(match value {
|
||||
Value::Float32(x) => TelemetryDataValue::Float32(x),
|
||||
Value::Float64(x) => TelemetryDataValue::Float64(x),
|
||||
let Some(timestamp) = DateTime::from_timestamp(timestamp.secs, timestamp.nanos as u32) else {
|
||||
return Err(Status::invalid_argument("Failed to construct UTC DateTime"));
|
||||
};
|
||||
|
||||
let _ = tlm_data.data.send_replace(Some(TelemetryDataItem {
|
||||
value: match value {
|
||||
Value::Float32(x) => TelemetryDataValue::Float32(x),
|
||||
Value::Float64(x) => TelemetryDataValue::Float64(x),
|
||||
},
|
||||
timestamp: timestamp.to_rfc3339_opts(SecondsFormat::Millis, true)
|
||||
}));
|
||||
|
||||
Ok(TelemetryInsertResponse {})
|
||||
|
||||
Reference in New Issue
Block a user