Skip to main content

gwr_track/tracker/
dev_null.rs

1// Copyright (c) 2020 Graphcore Ltd. All rights reserved.
2
3use std::str::FromStr;
4
5use crate::Id;
6use crate::entity::Capacity;
7use crate::tracker::Track;
8use crate::tracker::aka::AlternativeNames;
9
10/// A tracker that does nothing.
11///
12/// This can be useful for benchmarks that want to have minimum overheads.
13pub struct DevNullTracker;
14
15impl Track for DevNullTracker {
16    fn unique_id(&self) -> Id {
17        Id(0)
18    }
19    fn enabled_level(&self, _id: Id) -> log::Level {
20        log::Level::Error
21    }
22    fn monitoring_window_size_for(&self, _id: Id) -> Option<u64> {
23        None
24    }
25    fn add_entity(
26        &self,
27        _id: Id,
28        _entity_name: &str,
29        _alternative_names: AlternativeNames,
30    ) -> log::Level {
31        log::Level::Error
32    }
33    fn enter(&self, _id: Id, _obj: Id) {}
34    fn exit(&self, _id: Id, _obj: Id) {}
35    fn value(&self, _id: Id, _value: f64) {}
36    fn begin_activity(&self, _activity: Id, _lane: Id, _name: &str) {}
37    fn end_activity(&self, _activity: Id) {}
38    fn add_to_group(&self, _activity: Id, _group_id: Id) {}
39    fn remove_from_group(&self, _activity: Id, _group_id: Id) {}
40    fn capacity(&self, _id: Id, _capacity: Capacity) {}
41    fn create_entity(&self, _created_by: Id, _id: Id, _name: &str) {}
42    fn create_monitor(&self, _created_by: Id, _id: Id, _name: &str) {}
43    fn create_lane(&self, _created_by: Id, _id: Id, _name: &str) {}
44    fn create_group(&self, _created_by: Id, _id: Id, _name: &str) {}
45    fn create_object(
46        &self,
47        _created_by: Id,
48        _id: Id,
49        _size: usize,
50        _units: &str,
51        _req_type: u8,
52        _details: &str,
53    ) {
54    }
55    fn destroy(&self, _id: Id, _obj: Id) {}
56    fn connect(&self, _connect_from: Id, _connect_to: Id) {}
57    fn log(&self, _id: Id, _level: log::Level, _msg: std::fmt::Arguments) {}
58    fn time(&self, _set_by: Id, _time_ns: f64) {}
59    fn shutdown(&self) {}
60}
61
62/// Take the command-line string and convert it to a Level
63#[must_use]
64pub fn str_to_level(lvl: &str) -> log::Level {
65    match log::Level::from_str(lvl) {
66        Ok(level) => level,
67        Err(_) => panic!("Unable to parse level string '{lvl}'"),
68    }
69}