fluvio-smartengine 0.50.1

The official Fluvio SmartEngine
Documentation
mod filter;
mod map;
mod array_map;
mod filter_map;
mod aggregate;
pub(crate) use instance::create_transform;
mod simple_transform;

mod instance {

    use anyhow::Result;
    use wasmtime::AsContextMut;

    use crate::engine::{error::EngineError, SmartModuleInitialData};
    use super::super::instance::{SmartModuleInstanceContext, DowncastableTransform};

    use super::{
        simple_transform::{
            SimpleTansform, FILTER_FN_NAME, MAP_FN_NAME, FILTER_MAP_FN_NAME, ARRAY_MAP_FN_NAME,
        },
        aggregate::SmartModuleAggregate,
    };

    pub(crate) fn create_transform(
        ctx: &SmartModuleInstanceContext,
        initial_data: SmartModuleInitialData,
        store: &mut impl AsContextMut,
    ) -> Result<Box<dyn DowncastableTransform>> {
        if let Some(tr) = SimpleTansform::try_instantiate(FILTER_FN_NAME, ctx, store)?
            .map(|transform| Box::new(transform) as Box<dyn DowncastableTransform>)
        {
            Ok(tr)
        } else if let Some(tr) = SimpleTansform::try_instantiate(MAP_FN_NAME, ctx, store)?
            .map(|transform| Box::new(transform) as Box<dyn DowncastableTransform>)
        {
            Ok(tr)
        } else if let Some(tr) = SimpleTansform::try_instantiate(FILTER_MAP_FN_NAME, ctx, store)?
            .map(|transform| Box::new(transform) as Box<dyn DowncastableTransform>)
        {
            Ok(tr)
        } else if let Some(tr) = SimpleTansform::try_instantiate(ARRAY_MAP_FN_NAME, ctx, store)?
            .map(|transform| Box::new(transform) as Box<dyn DowncastableTransform>)
        {
            Ok(tr)
        } else if let Some(tr) = SmartModuleAggregate::try_instantiate(ctx, initial_data, store)?
            .map(|transform| Box::new(transform) as Box<dyn DowncastableTransform>)
        {
            Ok(tr)
        } else {
            Err(EngineError::UnknownSmartModule.into())
        }
    }
}