instrument_visa/rm.rs
1use crate::error::map_visa_error;
2use instrument_core::Result;
3use std::sync::Arc;
4use visa_rs::prelude::DefaultRM;
5
6/// Shared resource manager — keeps the strong RM alive while sessions exist.
7#[derive(Clone)]
8pub struct SharedRm {
9 inner: Arc<DefaultRM>,
10}
11
12impl SharedRm {
13 pub fn new() -> Result<Self> {
14 let strong = DefaultRM::new().map_err(map_visa_error)?;
15 Ok(Self {
16 inner: Arc::new(strong),
17 })
18 }
19
20 pub fn strong(&self) -> &DefaultRM {
21 &self.inner
22 }
23}