Trait aversion::group::DataSource [−][src]
pub trait DataSource { type Error; type Header: GroupHeader; fn read_header(&mut self) -> Result<Self::Header, Self::Error>; fn read_message<T>(
&mut self,
header: &Self::Header
) -> Result<T, Self::Error>
where
T: DeserializeOwned; fn unknown_message(&self, msg_id: u16) -> Self::Error { ... } fn unknown_version<T>(&self, ver: u16) -> Self::Error { ... } fn unexpected_message<T>(&self, msg_id: u16) -> Self::Error { ... } }
Expand description
DataSource
allows user-defined IO, deserialization, and
error handling.
Associated Types
A user-defined error type.
This error type will be returned from read_header
and read_message
.
It’s probably a good idea for it to be able to represent IO errors,
deserialization errors, and “unknown message” errors.
type Header: GroupHeader
type Header: GroupHeader
A user-defined header struct.
The Header
is a way of communicating what kind of message is being
sent, along with the message version.
Required methods
fn read_header(&mut self) -> Result<Self::Header, Self::Error>
fn read_header(&mut self) -> Result<Self::Header, Self::Error>
Read a header from the data source.
This is a user-defined function that will read the next header. The data in the header will be used to determine what kind of message comes next.
fn read_message<T>(&mut self, header: &Self::Header) -> Result<T, Self::Error> where
T: DeserializeOwned,
fn read_message<T>(&mut self, header: &Self::Header) -> Result<T, Self::Error> where
T: DeserializeOwned,
Read a message from the data source.
This is a user-defined function that will deserialize a message
of type T
.
Provided methods
fn unknown_message(&self, msg_id: u16) -> Self::Error
fn unknown_message(&self, msg_id: u16) -> Self::Error
An unknown message id was received.
This is a user-defined function that constructs an error value.
This function will be called by GroupDeserialize::read_message
when an unknown message is received (a message with an unknown
message id).
fn unknown_version<T>(&self, ver: u16) -> Self::Error
fn unknown_version<T>(&self, ver: u16) -> Self::Error
An unknown version of a known message was received.
This is a user-defined function that constructs an error value.
This function will be called by GroupDeserialize::read_message
when a known message id is received, but with a message version that
is unknown.
fn unexpected_message<T>(&self, msg_id: u16) -> Self::Error
fn unexpected_message<T>(&self, msg_id: u16) -> Self::Error
Expected a specific message type, but got a different message id.
This is a user-defined function that constructs an error value.
This function will be called by [GroupDeserialize::expect_message
]
when a different message id is received from the message that was
specified.