Skip to main content

Trigger

Trait Trigger 

Source
pub trait Trigger: Send + Sync {
    // Required methods
    fn name(&self) -> &str;
    fn start<'a>(
        &'a self,
        sink: TriggerSink,
        token: &'a CancellationToken,
    ) -> TriggerFuture<'a>;
}
Expand description

A source of workflow run triggers.

Implementations listen for some signal (domain event, message queue, external webhook, etc.) and send TriggerEvents through the TriggerSink to request run creation.

§Lifecycle

  1. The runtime calls start with a sink and a cancellation token.
  2. The trigger runs until the token is cancelled (graceful shutdown) or an unrecoverable error occurs.
  3. Dropping the trigger releases all resources.

§Examples

use ironflow_runtime::trigger::{Trigger, TriggerFuture, TriggerSink, TriggerError};
use tokio_util::sync::CancellationToken;

struct MyTrigger;

impl Trigger for MyTrigger {
    fn name(&self) -> &str { "my-trigger" }

    fn start<'a>(
        &'a self,
        _sink: TriggerSink,
        token: &'a CancellationToken,
    ) -> TriggerFuture<'a> {
        Box::pin(async move {
            token.cancelled().await;
            Ok(())
        })
    }
}

Required Methods§

Source

fn name(&self) -> &str

Human-readable name for logging.

Source

fn start<'a>( &'a self, sink: TriggerSink, token: &'a CancellationToken, ) -> TriggerFuture<'a>

Start the trigger.

The implementation should send TriggerEvents through sink whenever a run should be created, and return when token is cancelled.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§