nmbrs_runtime/readouts/
registry.rs1use std::sync::Arc;
15
16use super::Readout;
17use super::ReadoutHandle;
18use super::builtins;
19
20pub struct Registry;
25
26impl Registry {
27 pub fn lookup(name: &str) -> Option<ReadoutHandle> {
29 match name {
30 "each_close" => Some(Arc::new(builtins::each_close::EachClose) as Arc<dyn Readout>),
31 "error_readout" => {
32 Some(Arc::new(builtins::error_readout::ErrorReadout) as Arc<dyn Readout>)
33 }
34 "metric" => Some(Arc::new(builtins::metric::Metric) as Arc<dyn Readout>),
35 "phase_outcome" => {
36 Some(Arc::new(builtins::phase_outcome::PhaseOutcomeReadout) as Arc<dyn Readout>)
37 }
38 "phase_starting" => {
39 Some(Arc::new(builtins::phase_starting::PhaseStarting) as Arc<dyn Readout>)
40 }
41 "phase_status" => {
42 Some(Arc::new(builtins::phase_status::PhaseStatus) as Arc<dyn Readout>)
43 }
44 "phase_summary" => {
45 Some(Arc::new(builtins::phase_summary::PhaseSummary) as Arc<dyn Readout>)
46 }
47 "scope_close" => Some(Arc::new(builtins::scope_close::ScopeClose) as Arc<dyn Readout>),
48 "scope_header" => {
49 Some(Arc::new(builtins::scope_header::ScopeHeader) as Arc<dyn Readout>)
50 }
51 "scope_open" => Some(Arc::new(builtins::scope_open::ScopeOpen) as Arc<dyn Readout>),
52 "session_banner" => {
53 Some(Arc::new(builtins::session_banner::SessionBanner) as Arc<dyn Readout>)
54 }
55 "session_notice" => {
56 Some(Arc::new(builtins::session_notice::SessionNotice) as Arc<dyn Readout>)
57 }
58 "session_summary" => {
59 Some(Arc::new(builtins::session_summary::SessionSummary) as Arc<dyn Readout>)
60 }
61 "trace" => Some(Arc::new(builtins::trace::Trace) as Arc<dyn Readout>),
62 "truncated_phases" => {
63 Some(Arc::new(builtins::truncated_phases::TruncatedPhases) as Arc<dyn Readout>)
64 }
65 _ => None,
66 }
67 }
68
69 pub fn all_names() -> &'static [&'static str] {
73 &[
74 "each_close",
75 "error_readout",
76 "metric",
77 "phase_outcome",
78 "phase_starting",
79 "phase_status",
80 "phase_summary",
81 "scope_close",
82 "scope_header",
83 "scope_open",
84 "session_banner",
85 "session_notice",
86 "session_summary",
87 "trace",
88 "truncated_phases",
89 ]
90 }
91}