flarrow-api 0.3.1

flarrow (flow + arrow) is a rust runtime/framework for building dataflow applications.
Documentation
use crate::prelude::*;
use thirdparty::arrow_data::ArrayData;

/// Not typed Input to receive data from the dataflow
#[derive(Debug)]
pub struct RawInput {
    /// The receiver part of the MPSC channel
    pub rx: MessageReceiver,

    /// The source node layout, useful for debugging
    pub source: NodeLayout,
    /// The layout of the input, useful for debugging
    pub layout: InputLayout,
}

impl RawInput {
    /// Create a new RawInput instance
    pub fn new(rx: MessageReceiver, source: NodeLayout, layout: InputLayout) -> Self {
        Self { rx, source, layout }
    }

    /// Receive a message from the channel, blocking until one is available, don't use it
    /// in async context
    pub fn blocking_recv(&mut self) -> Result<(Header, ArrayData)> {
        let DataflowMessage { header, data } = self
            .rx
            .blocking_recv()
            .ok_or_eyre(report_error_receiving(&self.source, &self.layout))?;

        Ok((header, data))
    }

    /// Receive a message from the channel, asynchronously
    pub async fn recv(&mut self) -> Result<(Header, ArrayData)> {
        let DataflowMessage { header, data } = self
            .rx
            .recv()
            .await
            .ok_or_eyre(report_error_receiving(&self.source, &self.layout))?;

        Ok((header, data))
    }
}