Skip to main content

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}