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.

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

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.

Read a message from the data source.

This is a user-defined function that will deserialize a message of type T.

Provided methods

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).

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.

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.

Implementors