zero_trust_rps/common/connection/
reader.rs1use std::future::Future;
2
3use serde::de::DeserializeOwned;
4use thiserror::Error;
5
6#[derive(Error, Debug)]
7pub enum GetNextMessageError {
8 #[error("Message too large: reached maximum buffer size")]
9 MessageTooLarge,
10 #[error("read error: {}", .0)]
11 ReadErr(#[from] quinn::ReadError),
12 #[error("invalid data: {}", .0)]
13 DeserializeErr(#[from] postcard::Error),
14}
15
16pub trait Reader: Send {
17 fn get_next_message<T: DeserializeOwned + Send>(
19 &mut self,
20 ) -> impl Future<Output = Result<Option<T>, GetNextMessageError>> + Send;
21}