improve mqtt

This commit is contained in:
csehviktor
2025-07-03 06:09:09 +02:00
parent dbbc673efe
commit 58a4ab9974
4 changed files with 115 additions and 0 deletions

35
common/src/mqtt.rs Normal file
View File

@@ -0,0 +1,35 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use serde_json::Error;
use crate::metrics::Metrics;
pub const STATUS_TOPIC: &str = "system/metrics";
#[derive(Debug, Serialize, Deserialize)]
pub struct StatusMessage<'a> {
pub agent: &'a str,
pub metrics: Metrics,
pub timestamp: DateTime<Utc>,
}
impl<'a> StatusMessage<'a> {
pub fn new(agent: &'a str, metrics: Metrics) -> Self {
Self {
agent,
metrics,
timestamp: Utc::now(),
}
}
pub fn to_string(&self) -> Result<String, Error> {
serde_json::to_string_pretty(&self)
}
}
impl<'a> TryFrom<&'a [u8]> for StatusMessage<'a> {
type Error = serde_json::Error;
fn try_from(value: &'a [u8]) -> Result<Self, Self::Error> {
serde_json::from_slice(value)
}
}