1use pyo3::prelude::*;
4
5mod convert;
6mod errors;
7mod runtime;
8
9pub mod channel;
10pub mod client;
11pub mod codec;
12pub mod discovery;
13pub mod nt;
14pub mod packet;
15pub mod server;
16pub mod source;
17
18#[pymodule]
19fn spvirit(m: &Bound<'_, PyModule>) -> PyResult<()> {
20 runtime::init_async_runtime();
22
23 errors::register(m)?;
25
26 m.add_class::<client::PyClient>()?;
28 m.add_class::<client::PyClientBuilder>()?;
29 m.add_class::<client::PyGetResult>()?;
30 m.add_class::<client::PyMonitorEvent>()?;
31 m.add_class::<client::PyDiscoveredServer>()?;
32
33 m.add_class::<server::PyServerBuilder>()?;
35 m.add_class::<server::PyServer>()?;
36 m.add_class::<server::PyStore>()?;
37
38 source::register(m)?;
40
41 m.add_class::<nt::PyAlarm>()?;
43 m.add_class::<nt::PyTimeStamp>()?;
44 m.add_class::<nt::PyDisplay>()?;
45 m.add_class::<nt::PyControl>()?;
46 m.add_class::<nt::PyNtScalar>()?;
47 m.add_class::<nt::PyNtScalarArray>()?;
48 m.add_class::<nt::PyNtTable>()?;
49 m.add_class::<nt::PyNtNdArray>()?;
50
51 m.add_function(wrap_pyfunction!(client::py_discover_servers, m)?)?;
53
54 codec::register(m)?;
56
57 channel::register(m)?;
59
60 Ok(())
61}