From d8ae36dc34250dd567e28fede1f1c01fdbb57d70 Mon Sep 17 00:00:00 2001 From: "Roman S. Borschel" Date: Mon, 14 Sep 2020 11:19:43 +0200 Subject: [PATCH] Further decouple SystemInterval values. --- backend/src/node.rs | 22 ++++++++++++++++------ backend/src/node/message.rs | 13 ++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/backend/src/node.rs b/backend/src/node.rs index a359b94..67aa430 100644 --- a/backend/src/node.rs +++ b/backend/src/node.rs @@ -142,12 +142,22 @@ 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 { + self.stats.peers = peers; + changed = true; + } + if let Some(txcount) = interval.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 9ce2afc..ee4f2cc 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, } }