pub struct MqttServer<St, H, C, P> { /* private fields */ }
Expand description

Mqtt v3.1.1 server

St - connection state H - handshake service C - service for handling control messages P - service for handling publish

Every mqtt connection is handled in several steps. First step is handshake. Server calls handshake service with Handshake message, during this step service can authenticate connect packet, it must return instance of connection state St.

Handshake service could be expressed as simple function:

use ntex_mqtt::v3::{Handshake, HandshakeAck};

async fn handshake(hnd: Handshake) -> Result<HandshakeAkc<MyState>, MyError> {
    Ok(hnd.ack(MyState::new(), false))
}

During next stage, control and publish services get constructed, both factories receive Session<St> state object as an argument. Publish service handles Publish packet. On success, server server sends PublishAck packet to the client, in case of error connection get closed. Control service receives all other packets, like Subscribe, Unsubscribe etc. Also control service receives errors from publish service and connection disconnect.

Implementations

Create server factory and provide handshake service

Set handshake timeout.

Handshake includes connect packet and response connect-ack. By default handshake timeuot is disabled.

Set server connection disconnect timeout.

Defines a timeout for disconnect connection. If a disconnect procedure does not complete within this time, the connection get dropped.

To disable timeout set value to 0.

By default disconnect timeout is set to 3 seconds.

Set max allowed QoS.

If peer sends publish with higher qos then ProtocolError::MaxQoSViolated(..) By default max qos is set to ExactlyOnce.

Set max inbound frame size.

If max size is set to 0, size is unlimited. By default max size is set to 0

Number of in-flight concurrent messages.

By default in-flight is set to 16 messages

Total size of in-flight messages.

By default total in-flight size is set to 64Kb

Service to handle control packets

All control packets are processed sequentially, max number of buffered control packets is 16.

Set service to handle publish packets and create mqtt server factory

Finish server configuration and create mqtt server factory

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more