LCOV - code coverage report
Current view: top level - libs/desim/src - node_os.rs (source / functions) Coverage Total Hit
Test: 02e8c57acd6e2b986849f552ca30280d54699b79.info Lines: 100.0 % 21 21
Test Date: 2024-06-26 17:13:54 Functions: 100.0 % 7 7

            Line data    Source code
       1              : use std::sync::Arc;
       2              : 
       3              : use rand::Rng;
       4              : 
       5              : use crate::proto::NodeEvent;
       6              : 
       7              : use super::{
       8              :     chan::Chan,
       9              :     network::TCP,
      10              :     world::{Node, NodeId, World},
      11              : };
      12              : 
      13              : /// Abstraction with all functions (aka syscalls) available to the node.
      14              : #[derive(Clone)]
      15              : pub struct NodeOs {
      16              :     world: Arc<World>,
      17              :     internal: Arc<Node>,
      18              : }
      19              : 
      20              : impl NodeOs {
      21       148439 :     pub fn new(world: Arc<World>, internal: Arc<Node>) -> NodeOs {
      22       148439 :         NodeOs { world, internal }
      23       148439 :     }
      24              : 
      25              :     /// Get the node id.
      26        76573 :     pub fn id(&self) -> NodeId {
      27        76573 :         self.internal.id
      28        76573 :     }
      29              : 
      30              :     /// Opens a bidirectional connection with the other node. Always successful.
      31       268845 :     pub fn open_tcp(&self, dst: NodeId) -> TCP {
      32       268845 :         self.world.open_tcp(dst)
      33       268845 :     }
      34              : 
      35              :     /// Returns a channel to receive node events (socket Accept and internal messages).
      36       151391 :     pub fn node_events(&self) -> Chan<NodeEvent> {
      37       151391 :         self.internal.node_events()
      38       151391 :     }
      39              : 
      40              :     /// Get current time.
      41      2481559 :     pub fn now(&self) -> u64 {
      42      2481559 :         self.world.now()
      43      2481559 :     }
      44              : 
      45              :     /// Generate a random number in range [0, max).
      46       264790 :     pub fn random(&self, max: u64) -> u64 {
      47       264790 :         self.internal.rng.lock().gen_range(0..max)
      48       264790 :     }
      49              : 
      50              :     /// Append a new event to the world event log.
      51       213910 :     pub fn log_event(&self, data: String) {
      52       213910 :         self.internal.log_event(data)
      53       213910 :     }
      54              : }
        

Generated by: LCOV version 2.1-beta