From e701b62214a2f9afdf260d1cf6465aa077cd1f04 Mon Sep 17 00:00:00 2001 From: nm17 Date: Mon, 24 Feb 2025 19:53:24 +0400 Subject: [PATCH] fix(ingest_protocol): slight rework --- src/ingest_protocol/error.rs | 2 +- src/ingest_protocol/packet_types.rs | 10 ++-- src/ingest_protocol/parser.rs | 10 ++-- src/ingest_protocol/tests/mod.rs | 78 +++++++++++++++++++++++++---- 4 files changed, 81 insertions(+), 19 deletions(-) diff --git a/src/ingest_protocol/error.rs b/src/ingest_protocol/error.rs index 843eddf..a152d85 100644 --- a/src/ingest_protocol/error.rs +++ b/src/ingest_protocol/error.rs @@ -1,7 +1,7 @@ use snafu::Snafu; /// Тип ошибки Ingest протокола -#[derive(Debug, Snafu)] +#[derive(Debug, Snafu, PartialEq)] #[snafu(visibility(pub))] pub enum Error { Incomplete, diff --git a/src/ingest_protocol/packet_types.rs b/src/ingest_protocol/packet_types.rs index f3409c6..2c0db43 100644 --- a/src/ingest_protocol/packet_types.rs +++ b/src/ingest_protocol/packet_types.rs @@ -30,9 +30,9 @@ use std::hash::{Hash, Hasher}; /// NarodMon, `mac` может означать EUI-48 совместимый MAC адрес, или же просто /// уникальный идентификатор. /// -/// Парсинг этих данных отличается в разных транспортных протоколах. -/// Для HTTP /post или /get: см. [crate::web_server::old_device_sensor_api] -/// Для TCP/UDP: TODO +/// Парсинг этих данных отличается в разных транспортных протоколах. +/// Для HTTP /post или /get: см. [crate::web_server::old_device_sensor_api] +/// Для TCP/UDP: см. [crate::ingest_protocol] /// Для MQTT: TODO #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub struct SensorValue { @@ -74,6 +74,10 @@ pub struct NMDeviceDataPacket { pub values: HashSet, + /// Владелец датчика + /// + /// Будет игнорироваться, так как в данном значении нет смысла, одни проблемы. + /// Автором датчика может быть только тот, кто его создал. pub owner: Option, pub lat: Option, diff --git a/src/ingest_protocol/parser.rs b/src/ingest_protocol/parser.rs index 7efa60a..250ba3b 100644 --- a/src/ingest_protocol/parser.rs +++ b/src/ingest_protocol/parser.rs @@ -40,7 +40,7 @@ pub fn parse_packet(input: impl AsRef<[u8]>) -> Result None, }; - (&input[idx_lf..], mac, name) + (&input[idx_lf+1..], mac, name) }; let mut packet = NMDeviceDataPacket { @@ -53,12 +53,14 @@ pub fn parse_packet(input: impl AsRef<[u8]>) -> Result) -> Result