Skip to main content

ControlPlane

Trait ControlPlane 

Source
pub trait ControlPlane: Send + Sync {
    // Required methods
    fn topology<'life0, 'life1, 'async_trait>(
        &'life0 self,
        pipeline: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<Topology, String>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn resolve_dataset<'life0, 'life1, 'async_trait>(
        &'life0 self,
        dataset: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<Binding, String>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn heartbeat<'life0, 'life1, 'async_trait>(
        &'life0 self,
        build_id: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = BuildSignal> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn put_record<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        build_id: &'life1 str,
        record: &'life2 Value,
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             Self: 'async_trait;
}
Expand description

The host contract. Implementations must be cheap to clone behind an Arc and safe to call from the engine’s single control task (the task threads never touch it).

Required Methods§

Source

fn topology<'life0, 'life1, 'async_trait>( &'life0 self, pipeline: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Topology, String>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

The pipeline’s stream topology (definition only — the engine parses/validates the steps).

Source

fn resolve_dataset<'life0, 'life1, 'async_trait>( &'life0 self, dataset: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Binding, String>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Resolve a dataset to its source and sink factories, failing loudly for a dataset the host does not know.

Source

fn heartbeat<'life0, 'life1, 'async_trait>( &'life0 self, build_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = BuildSignal> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Liveness + control: one round-trip carries both (the echo tells the engine to stop).

Source

fn put_record<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, build_id: &'life1 str, record: &'life2 Value, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,

Persist the build record (status, metrics, timestamps). Best-effort; hosts log failures.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§