Skip to main content

std_rs/
lib.rs

1#![allow(
2    clippy::collapsible_if,
3    clippy::derivable_impls,
4    clippy::field_reassign_with_default,
5    clippy::type_complexity
6)]
7
8pub mod device_support;
9pub mod records;
10pub mod snl;
11
12pub use records::epid::EpidRecord;
13pub use records::throttle::ThrottleRecord;
14pub use records::timestamp::TimestampRecord;
15
16/// Path to the bundled database template directory.
17pub const STD_DB_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/db");
18
19/// Return the epid record type factory for injection into IocBuilder.
20pub fn epid_record_factory() -> (&'static str, epics_base_rs::server::RecordFactory) {
21    ("epid", Box::new(|| Box::new(EpidRecord::default())))
22}
23
24/// Return the throttle record type factory for injection into IocBuilder.
25pub fn throttle_record_factory() -> (&'static str, epics_base_rs::server::RecordFactory) {
26    ("throttle", Box::new(|| Box::new(ThrottleRecord::default())))
27}
28
29/// Return the timestamp record type factory for injection into IocBuilder.
30pub fn timestamp_record_factory() -> (&'static str, epics_base_rs::server::RecordFactory) {
31    (
32        "timestamp",
33        Box::new(|| Box::new(TimestampRecord::default())),
34    )
35}
36
37/// Return all std record type factories for bulk registration.
38pub fn std_record_factories() -> Vec<(&'static str, epics_base_rs::server::RecordFactory)> {
39    vec![
40        epid_record_factory(),
41        throttle_record_factory(),
42        timestamp_record_factory(),
43    ]
44}
45
46/// Register all std record types via the global registry (legacy).
47/// Prefer `std_record_factories()` with `IocBuilder::register_record_type()`.
48pub fn register_std_record_types() {
49    for (name, factory) in std_record_factories() {
50        epics_base_rs::server::db_loader::register_record_type(name, factory);
51    }
52}