Skip to main content

spvirit_server/
lib.rs

1//! PVAccess server library for EPICS.
2//!
3//! Provides reusable server-side types, .db parsing, connection state, and the
4//! [`PvStore`] trait that abstracts over a PV data source.  Consumers implement
5//! `PvStore` and pass it to the protocol handler to serve PVs over PVAccess.
6//!
7//! # High-level API
8//!
9//! ```rust,ignore
10//! use spvirit_server::PvaServer;
11//!
12//! let server = PvaServer::builder()
13//!     .ai("SIM:TEMP", 22.5)
14//!     .ao("SIM:SETPOINT", 25.0)
15//!     .bo("SIM:ENABLE", false)
16//!     .build();
17//!
18//! server.run().await?;
19//! ```
20
21pub mod apply;
22pub mod beacon;
23pub mod convert;
24pub mod db;
25pub mod decode;
26pub mod group;
27pub mod handler;
28pub mod monitor;
29pub mod pva_server;
30pub mod pvstore;
31pub mod server;
32pub mod simple_store;
33pub mod state;
34pub mod types;
35
36// Convenience re-exports.
37pub use group::{
38    FieldMapping, GroupMember, GroupPvDef, GroupPvStore, TriggerDef, merge_group_defs,
39    parse_group_config, parse_info_group,
40};
41pub use handler::PvListMode;
42pub use pva_server::{PvaServer, PvaServerBuilder};
43pub use pvstore::PvStore;
44pub use server::{PvaServerConfig, PvaServerState, run_pva_server, run_pva_server_with_registry};
45pub use simple_store::SimplePvStore;
46pub use types::{
47    DbCommonState, LinkExpr, OutputMode, RecordData, RecordInstance, RecordType, ScanMode,
48};