Improve channel status return

This commit is contained in:
Dominik Werder
2025-02-18 15:59:25 +01:00
parent 9a81e25625
commit cc251dc433
6 changed files with 234 additions and 76 deletions

View File

@@ -20,7 +20,6 @@ use conn::ChannelStateInfo;
use conn::ChannelStatusPartial;
use conn::ConnCommand;
use conn::ConnCommandResult;
use core::fmt;
use dbpg::seriesbychannel::BoxedSend;
use dbpg::seriesbychannel::CanSendChannelInfoResult;
use dbpg::seriesbychannel::ChannelInfoQuery;
@@ -55,6 +54,7 @@ use stats::CaProtoStats;
use stats::IocFinderStats;
use std::collections::BTreeMap;
use std::collections::VecDeque;
use std::fmt;
use std::net::SocketAddr;
use std::net::SocketAddrV4;
use std::pin::Pin;
@@ -584,13 +584,7 @@ impl CaConnSet {
fn handle_add_channel_new(cmd: ChannelAdd, ress: StateTransRes) -> Result<(), Error> {
{
let item = ChannelState {
value: ChannelStateValue::Active(ActiveChannelState::WaitForStatusSeriesId {
since: SystemTime::now(),
}),
config: cmd.ch_cfg.clone(),
touched: 1,
};
let item = ChannelState::new_wait_for_cssid(&cmd.ch_cfg);
*ress.chst = item;
}
{

View File

@@ -188,6 +188,7 @@ pub struct ChannelState {
pub value: ChannelStateValue,
pub config: ChannelConfig,
pub touched: u8,
config_file_basename: String,
}
impl ChannelState {
@@ -199,6 +200,26 @@ impl ChannelState {
false
}
}
pub fn new_dummy() -> Self {
Self {
value: ChannelStateValue::InitDummy,
config: ChannelConfig::dummy(),
touched: 0,
config_file_basename: String::new(),
}
}
pub fn new_wait_for_cssid(ch_cfg: &crate::conf::ChannelConfig) -> Self {
Self {
value: ChannelStateValue::Active(ActiveChannelState::WaitForStatusSeriesId {
since: SystemTime::now(),
}),
config: ch_cfg.clone(),
touched: 1,
config_file_basename: ch_cfg.config_file_basename().into(),
}
}
}
#[derive(Debug, Serialize)]
@@ -230,11 +251,7 @@ impl ChannelStateMap {
pub fn get_mut_or_dummy_init(&mut self, k: &ChannelName) -> &mut ChannelState {
if !self.map.contains_key(k) {
let dummy = ChannelState {
value: ChannelStateValue::InitDummy,
config: ChannelConfig::dummy(),
touched: 0,
};
let dummy = ChannelState::new_dummy();
self.map.insert(k.clone(), dummy);
}
self.map.get_mut(k).unwrap()