1pub mod client;
4pub mod codec;
5pub mod control;
6mod default;
7mod dispatcher;
8mod handshake;
9mod publish;
10mod router;
11mod server;
12mod shared;
13mod sink;
14
15pub type Session<St> = crate::Session<MqttSink, St>;
16
17use std::num::NonZeroU16;
18
19pub use self::control::{Control, ControlAck};
20pub use self::handshake::{Handshake, HandshakeAck};
21pub use self::publish::{Publish, PublishAck};
22pub use self::router::Router;
23pub use self::server::MqttServer;
24pub use self::sink::{MqttSink, SubscribeBuilder, UnsubscribeBuilder};
25pub use self::sink::{PublishBuilder, StreamingPayload, StreamingPublishBuilder};
26
27pub use crate::error;
28pub use crate::topic::{TopicFilter, TopicFilterError};
29pub use crate::types::QoS;
30
31const RECEIVE_MAX_DEFAULT: NonZeroU16 = unsafe { NonZeroU16::new_unchecked(65_535) };
32
33fn disconnect(msg: &'static str) -> ControlAck {
34 log::error!("{}", msg);
35
36 ControlAck {
37 packet: Some(
38 codec::Disconnect::new(codec::DisconnectReasonCode::ImplementationSpecificError)
39 .into(),
40 ),
41 disconnect: true,
42 }
43}