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
- The runtime calls
startwith a sink and a cancellation token. - The trigger runs until the token is cancelled (graceful shutdown) or an unrecoverable error occurs.
- 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§
Sourcefn start<'a>(
&'a self,
sink: TriggerSink,
token: &'a CancellationToken,
) -> TriggerFuture<'a>
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".