pub mod intercom;
pub use intercom::IntercomProvider;
use tokio::sync::{
broadcast::{self},
mpsc::{self},
};
use crate::{
dbr::{Dbr, DbrType},
messages::{self, ErrorCondition, MonitorMask},
};
pub trait Provider: Sync + Send + Clone + 'static {
fn provides(&self, pv_name: &str) -> bool;
fn read_value(
&self,
pv_name: &str,
requested_type: Option<DbrType>,
) -> Result<Dbr, ErrorCondition>;
#[allow(unused_variables)]
fn get_access_right(
&self,
pv_name: &str,
client_user_name: Option<&str>,
client_host_name: Option<&str>,
) -> messages::Access {
messages::Access::Read
}
#[allow(unused_variables)]
fn write_value(&mut self, pv_name: &str, value: Dbr) -> Result<(), ErrorCondition> {
Err(ErrorCondition::NoWtAccess)
}
#[allow(unused_variables)]
fn monitor_value(
&mut self,
pv_name: &str,
data_type: DbrType,
data_count: usize,
mask: MonitorMask,
trigger: mpsc::Sender<String>,
) -> Result<broadcast::Receiver<Dbr>, ErrorCondition> {
Err(ErrorCondition::UnavailInServ)
}
}