pub trait EventToken:
Debug
+ Send
+ Sync
+ 'static {
// Required methods
fn as_any(&self) -> &dyn Any;
fn origin(&self) -> EventDomainId;
fn wait(&self) -> Result<()>;
}Expand description
Opaque completion token produced by one event-domain run.
wait is repeatable and safe to call concurrently. A schedule may fan one
completion out to multiple foreign event domains, so implementations must
not consume the token on the first wait.
§Examples
use tenferro_runtime::runtime::EventToken;
fn inspect(token: &dyn EventToken) -> tenferro_runtime::Result<()> {
let _origin = token.origin();
let _opaque = token.as_any();
token.wait()?;
token.wait()
}Required Methods§
Sourcefn as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Return the token as Any for driver-specific inspection.
§Examples
use tenferro_runtime::{EventDomainDriver, EventDomainId};
fn inspect(
driver: &dyn EventDomainDriver,
domain: EventDomainId,
) -> tenferro_runtime::Result<()> {
let mut run = driver.begin_run(domain)?;
let mut launch = || Ok(());
let token = run.enqueue(&[], &mut launch)?;
let _opaque = token.as_any();
Ok(())
}Sourcefn origin(&self) -> EventDomainId
fn origin(&self) -> EventDomainId
Return the exact frozen event domain that produced this token.
§Examples
use tenferro_runtime::{EventDomainId, EventToken};
fn inspect(token: &dyn EventToken, expected: EventDomainId) {
assert_eq!(token.origin(), expected);
}Sourcefn wait(&self) -> Result<()>
fn wait(&self) -> Result<()>
Wait on the host until this completion becomes ready.
The runtime scheduler uses this repeatable host bridge only after it classifies a scheduled cross-domain transfer dependency. Destination drivers must not use it as a generic foreign-token fallback.
§Errors
Returns a typed backend or runtime error when the native completion reports failure.
§Examples
use tenferro_runtime::EventToken;
fn wait_repeatably(token: &dyn EventToken) -> tenferro_runtime::Result<()> {
token.wait()?;
token.wait()
}