rust-mqtt/src/network/network_trait.rs
Ondrej Babec 1e3f8e8302
Futures
2022-02-25 15:19:28 +01:00

34 lines
743 B
Rust

use core::fmt::Error;
use core::future::Future;
use crate::packet::mqtt_packet::Packet;
pub enum NetworkError {
Connection,
Unknown,
}
pub trait Network {
type ConnectionFuture<'m>: Future<Output = Result<(), NetworkError>>
where
Self: 'm;
type WriteFuture<'m>: Future<Output = Result<(), NetworkError>>
where
Self: 'm;
type ReadFuture<'m>: Future<Output = Result<usize, NetworkError>>
where
Self: 'm;
fn new(ip: [u8; 4], port: u16) -> Self;
fn create_connection(&'m mut self) -> Self::ConnectionFuture<'m>;
fn send(&'m mut self, buffer: &'m mut [u8], len: usize) -> Self::WriteFuture<'m>;
fn receive(&'m mut self, buffer: &'m mut [u8]) -> Self::ReadFuture<'m>;
}