pub trait OpcProvider: Send + Sync {
// Required methods
fn list_servers<'life0, 'life1, 'async_trait>(
&'life0 self,
host: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<String>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn browse_tags<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
max_tags: usize,
progress: Arc<AtomicUsize>,
tags_sink: Arc<Mutex<Vec<String>>>,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<String>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_tag_values<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
tag_ids: Vec<String>,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<TagValue>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn write_tag_value<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
server: &'life1 str,
tag_id: &'life2 str,
value: OpcValue,
) -> Pin<Box<dyn Future<Output = OpcResult<WriteResult>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
// Provided methods
fn browse_capabilities<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowseCapabilities>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn open_browse_session<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowseSessionToken>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn browse_page<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 BrowseSessionToken,
request: BrowsePageRequest,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowsePage>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn close_browse_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 BrowseSessionToken,
) -> Pin<Box<dyn Future<Output = OpcResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
}Expand description
Async trait for OPC DA operations.
This is the stable public API. Backend implementations provide the actual COM/DCOM interaction.
Required Methods§
Sourcefn list_servers<'life0, 'life1, 'async_trait>(
&'life0 self,
host: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_servers<'life0, 'life1, 'async_trait>(
&'life0 self,
host: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List available OPC DA servers on the given host.
§Errors
Returns Err if COM initialization fails or the server registry
cannot be enumerated.
Browse tags recursively, pushing discoveries to tags_sink.
§Errors
Returns Err if the server connection fails, the ProgID cannot be
resolved, or the namespace walk encounters an unrecoverable error.
Sourcefn read_tag_values<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
tag_ids: Vec<String>,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<TagValue>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_tag_values<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
tag_ids: Vec<String>,
) -> Pin<Box<dyn Future<Output = OpcResult<Vec<TagValue>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Read current values for the given tag IDs.
§Errors
Returns Err if the server connection fails, no items can be added
to the OPC group, or the synchronous read operation fails.
Sourcefn write_tag_value<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
server: &'life1 str,
tag_id: &'life2 str,
value: OpcValue,
) -> Pin<Box<dyn Future<Output = OpcResult<WriteResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_tag_value<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
server: &'life1 str,
tag_id: &'life2 str,
value: OpcValue,
) -> Pin<Box<dyn Future<Output = OpcResult<WriteResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Write a value to a single OPC DA tag.
§Errors
Returns Err if the server connection fails, the tag cannot be added
to the OPC group, or the synchronous write operation fails.
Provided Methods§
Sourcefn browse_capabilities<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowseCapabilities>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn browse_capabilities<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowseCapabilities>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return the native browse capabilities of an OPC DA server.
§Errors
Returns Err if the server cannot be connected or exposes no supported
OPC DA browse interface.
Sourcefn open_browse_session<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowseSessionToken>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_browse_session<'life0, 'life1, 'async_trait>(
&'life0 self,
server: &'life1 str,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowseSessionToken>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Open an isolated native browse session with its own server connection.
§Errors
Returns Err if the server cannot be connected, browsing is unsupported,
or the worker’s bounded session capacity has been reached.
Sourcefn browse_page<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 BrowseSessionToken,
request: BrowsePageRequest,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowsePage>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn browse_page<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 BrowseSessionToken,
request: BrowsePageRequest,
) -> Pin<Box<dyn Future<Output = OpcResult<BrowsePage>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Browse one bounded level of an open native browse session.
§Errors
Returns Err for invalid, closed, or expired tokens; invalid page sizes;
unsupported requests; or underlying OPC browse failures.
Sourcefn close_browse_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 BrowseSessionToken,
) -> Pin<Box<dyn Future<Output = OpcResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn close_browse_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 BrowseSessionToken,
) -> Pin<Box<dyn Future<Output = OpcResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Explicitly close a native browse session and release its server connection.
§Errors
Returns Err if the session token is invalid, expired, or already closed.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementors§
impl OpcProvider for MockOpcProvider
Async trait for OPC DA operations.
This is the stable public API. Backend implementations provide the actual COM/DCOM interaction.