Skip to main content

EventToken

Trait EventToken 

Source
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§

Source

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(())
}
Source

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);
}
Source

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()
}

Implementors§