azure_iot_sdk/
transport.rs

1use 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///
20#[async_trait]
21pub trait Transport {
22    ///
23    async fn send_message(&mut self, message: Message) -> crate::Result<()>;
24    ///
25    #[cfg(feature = "twin-properties")]
26    async fn send_property_update(&mut self, request_id: &str, body: &str) -> crate::Result<()>;
27
28    ///
29    #[cfg(feature = "twin-properties")]
30    async fn request_twin_properties(&mut self, request_id: &str) -> crate::Result<()>;
31
32    ///
33    #[cfg(feature = "direct-methods")]
34    async fn respond_to_direct_method(
35        &mut self,
36        response: DirectMethodResponse,
37    ) -> crate::Result<()>;
38
39    ///
40    async fn ping(&mut self) -> crate::Result<()>;
41
42    ///
43    #[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}