use crate::prelude::*;
use thirdparty::arrow_data::ArrayData;
#[derive(Debug)]
pub struct RawInput {
pub rx: MessageReceiver,
pub source: NodeLayout,
pub layout: InputLayout,
}
impl RawInput {
pub fn new(rx: MessageReceiver, source: NodeLayout, layout: InputLayout) -> Self {
Self { rx, source, layout }
}
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))
}
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))
}
}