azure_iot_sdk/
transport.rs1use crate::message::Message;
2
3#[cfg(feature = "direct-methods")]
4use crate::message::DirectMethodResponse;
5#[cfg(any(
6 feature = "direct-methods",
7 feature = "c2d-messages",
8 feature = "twin-properties"
9))]
10use crate::message::MessageType;
11use async_trait::async_trait;
12#[cfg(any(
13 feature = "direct-methods",
14 feature = "c2d-messages",
15 feature = "twin-properties"
16))]
17use tokio::sync::mpsc::Receiver;
18
19#[async_trait]
21pub trait Transport {
22 async fn send_message(&mut self, message: Message) -> crate::Result<()>;
24 #[cfg(feature = "twin-properties")]
26 async fn send_property_update(&mut self, request_id: &str, body: &str) -> crate::Result<()>;
27
28 #[cfg(feature = "twin-properties")]
30 async fn request_twin_properties(&mut self, request_id: &str) -> crate::Result<()>;
31
32 #[cfg(feature = "direct-methods")]
34 async fn respond_to_direct_method(
35 &mut self,
36 response: DirectMethodResponse,
37 ) -> crate::Result<()>;
38
39 async fn ping(&mut self) -> crate::Result<()>;
41
42 #[cfg(any(
44 feature = "direct-methods",
45 feature = "c2d-messages",
46 feature = "twin-properties"
47 ))]
48 async fn get_receiver(&mut self) -> Receiver<MessageType>;
49}