diff --git a/backend/src/node.rs b/backend/src/node.rs index a359b9495..740b6907a 100644 --- a/backend/src/node.rs +++ b/backend/src/node.rs @@ -142,12 +142,26 @@ impl Node { } pub fn update_stats(&mut self, interval: &SystemInterval) -> Option<&NodeStats> { - if self.stats != interval.stats { - self.stats = interval.stats; - Some(&self.stats) - } else { - None - } + let mut changed = false; + + if let Some(peers) = interval.peers { + if peers != self.stats.peers { + self.stats.peers = peers; + changed = true; + } + } + if let Some(txcount) = interval.txcount { + if txcount != self.stats.txcount { + self.stats.txcount = txcount; + changed = true; + } + } + + if changed { + Some(&self.stats) + } else { + None + } } pub fn update_io(&mut self, interval: &SystemInterval) -> Option<&NodeIO> { diff --git a/backend/src/node/message.rs b/backend/src/node/message.rs index 9ce2afca2..ee4f2cc91 100644 --- a/backend/src/node/message.rs +++ b/backend/src/node/message.rs @@ -2,7 +2,7 @@ use actix::prelude::*; use chrono::{DateTime, Utc}; use serde::Deserialize; use serde::de::IgnoredAny; -use crate::node::{NodeDetails, NodeStats}; +use crate::node::NodeDetails; use crate::types::{Block, BlockNumber, BlockHash}; #[derive(Deserialize, Debug, Message)] @@ -63,14 +63,14 @@ pub struct SystemConnected { #[derive(Deserialize, Debug)] pub struct SystemInterval { - #[serde(flatten)] - pub stats: NodeStats, + pub peers: Option, + pub txcount: Option, pub bandwidth_upload: Option, pub bandwidth_download: Option, pub finalized_height: Option, pub finalized_hash: Option, #[serde(flatten)] - pub block: Block, + pub block: Option, pub network_state: Option, pub used_state_cache_size: Option, } @@ -132,9 +132,8 @@ impl Block { impl Details { pub fn best_block(&self) -> Option<&Block> { match self { - Details::BlockImport(block) | Details::SystemInterval(SystemInterval { block, .. }) => { - Some(block) - } + Details::BlockImport(block) => Some(block), + Details::SystemInterval(SystemInterval { block, .. }) => block.as_ref(), _ => None, } }