pub trait Device {
type RxToken<'a>: RxToken
where Self: 'a;
type TxToken<'a>: TxToken
where Self: 'a;
// Required methods
fn receive(
&mut self,
timestamp: Instant,
) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>;
fn transmit(&mut self, timestamp: Instant) -> Option<Self::TxToken<'_>>;
fn capabilities(&self) -> DeviceCapabilities;
}
Expand description
An interface for sending and receiving raw network frames.
The interface is based on tokens, which are types that allow to receive/transmit a
single packet. The receive
and transmit
functions only construct such tokens, the
real sending/receiving operation are performed when the tokens are consumed.
Required Associated Types§
Required Methods§
Sourcefn receive(
&mut self,
timestamp: Instant,
) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>
fn receive( &mut self, timestamp: Instant, ) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>
Construct a token pair consisting of one receive token and one transmit token.
The additional transmit token makes it possible to generate a reply packet based on the contents of the received packet. For example, this makes it possible to handle arbitrarily large ICMP echo (“ping”) requests, where the all received bytes need to be sent back, without heap allocation.
The timestamp must be a number of milliseconds, monotonically increasing since an arbitrary moment in time, such as system startup.
Sourcefn transmit(&mut self, timestamp: Instant) -> Option<Self::TxToken<'_>>
fn transmit(&mut self, timestamp: Instant) -> Option<Self::TxToken<'_>>
Construct a transmit token.
The timestamp must be a number of milliseconds, monotonically increasing since an arbitrary moment in time, such as system startup.
Sourcefn capabilities(&self) -> DeviceCapabilities
fn capabilities(&self) -> DeviceCapabilities
Get a description of device capabilities.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.