coap_client/backend/
mod.rs1use async_trait::async_trait;
6use coap_lite::Packet;
7use futures::{Future, Stream};
8
9use crate::RequestOptions;
10
11#[cfg(feature = "backend-tokio")]
12pub mod backend_tokio;
13
14#[cfg(feature = "backend-tokio")]
15pub use backend_tokio::{Tokio, TokioObserve};
16
17pub trait Observer<E>: Stream<Item = Result<Packet, E>> + Send {
18 fn token(&self) -> u32;
20 fn resource(&self) -> &str;
22}
23
24#[async_trait]
26pub trait Backend<E>: Send {
27 type Observe: Observer<E>;
28
29 async fn request(&mut self, req: Packet, opts: RequestOptions) -> Result<Packet, E>;
30
31 async fn observe(&mut self, resource: String, opts: RequestOptions)
32 -> Result<Self::Observe, E>;
33
34 async fn unobserve(&mut self, o: Self::Observe) -> Result<(), E>;
35}