use crate::prelude::*;
#[derive(Debug)]
pub struct Input<T: ArrowMessage> {
pub raw: RawInput,
_phantom: std::marker::PhantomData<T>,
}
impl<T: ArrowMessage> Input<T> {
pub fn new(rx: MessageReceiver, source: NodeID, layout: InputID) -> Self {
Self {
raw: RawInput::new(rx, source, layout),
_phantom: std::marker::PhantomData,
}
}
pub async fn recv(&mut self) -> Result<TypedDataflowMessage<T>> {
self.raw
.recv()
.await?
.try_into()
.wrap_err(report_failed_conversion_from_arrow::<T>(
&self.raw.source,
&self.raw.layout,
))
}
}