Simplify endpoint outcome state handling

This commit is contained in:
Michael Mikovsky
2026-04-25 20:47:37 -06:00
parent f2c6a54060
commit 31a0bd39b0
19 changed files with 234 additions and 192 deletions
+2 -2
View File
@@ -6,7 +6,7 @@
use std::collections::{BTreeMap, VecDeque};
use crossbeam_channel::unbounded;
use unshell::protocol::tree::{ChildRoute, ConnectionState, ProtocolEndpoint};
use unshell::protocol::tree::{ChildRoute, ProtocolEndpoint};
use crate::model::{DemoTree, NodeId, ScenarioDefinition, Selection};
@@ -42,7 +42,7 @@ impl Simulation {
.iter()
.map(|child_id| ChildRoute {
path: tree.node(*child_id).path.clone(),
state: ConnectionState::Registered,
registered: true,
})
.collect::<Vec<_>>();
+8 -10
View File
@@ -87,12 +87,11 @@ impl Simulation {
node_id: NodeId,
outcome: unshell::protocol::tree::EndpointOutcome,
) -> Result<(), SimError> {
if outcome.dropped {
self.record_trace(node_id, "packet dropped".to_owned());
}
if let Some((route, frame)) = outcome.forward {
match route {
match outcome {
unshell::protocol::tree::EndpointOutcome::Dropped => {
self.record_trace(node_id, "packet dropped".to_owned());
}
unshell::protocol::tree::EndpointOutcome::Forward { route, frame } => match route {
RouteDecision::Child(index) => {
let child_id = self.nodes[node_id.0]
.children
@@ -147,13 +146,12 @@ impl Simulation {
RouteDecision::Drop => {
self.record_trace(node_id, "route decision dropped frame".to_owned());
}
},
unshell::protocol::tree::EndpointOutcome::Local(event) => {
self.handle_local_event(node_id, event)?;
}
}
if let Some(event) = outcome.event {
self.handle_local_event(node_id, event)?;
}
Ok(())
}