diff --git a/simlib/mixnet-sims/src/node/mix/mod.rs b/simlib/mixnet-sims/src/node/mix/mod.rs index b891c1d..5133029 100644 --- a/simlib/mixnet-sims/src/node/mix/mod.rs +++ b/simlib/mixnet-sims/src/node/mix/mod.rs @@ -192,6 +192,8 @@ impl MixNode { step_id: 0, data_messages_generated: HashMap::new(), data_messages_fully_unwrapped: HashMap::new(), + accum_num_inbound_messages: 0, + accum_num_outbound_messages: 0, }, data_msg_lottery_update_time_sender, data_msg_lottery_interval, @@ -220,13 +222,15 @@ impl MixNode { .filter(|&id| Some(*id) != exclude_node) { self.network_interface - .send_message(*node_id, message.clone()) + .send_message(*node_id, message.clone()); + self.state.accum_num_outbound_messages += 1; } } fn receive(&mut self) -> Vec> { - self.network_interface - .receive_messages() + let received_messages = self.network_interface.receive_messages(); + self.state.accum_num_inbound_messages += received_messages.len(); + received_messages .into_iter() // Retain only messages that have not been seen before .filter(|msg| self.message_cache.insert(Self::sha256(&msg.payload().0))) diff --git a/simlib/mixnet-sims/src/node/mix/state.rs b/simlib/mixnet-sims/src/node/mix/state.rs index 4f450b6..db68883 100644 --- a/simlib/mixnet-sims/src/node/mix/state.rs +++ b/simlib/mixnet-sims/src/node/mix/state.rs @@ -16,8 +16,12 @@ pub struct MixnodeState { #[serde(serialize_with = "serialize_node_id_as_index")] pub node_id: NodeId, pub step_id: usize, + // For latency measurement pub data_messages_generated: HashMap, pub data_messages_fully_unwrapped: HashMap, + // For anonymity measurement + pub accum_num_inbound_messages: usize, + pub accum_num_outbound_messages: usize, } #[derive(Serialize)]