-
Check service readiness once per decoded item
-
Run un-readiness check in separate task
- Do not rely on not_ready(), always check service readiness
- Use updated Service trait
- Better rediness error handling
- Call control service on readiness error
- Disconnect on error from service readiness check
-
Do not check readiness for call
-
Handle service readiness errors during shutdown
- Middlewares support for mqtt server
- Derive Hash for the QoS enum #175
-
Switch to individual ntex_* crates
-
Use ntex-service 3.0
- Remove non_exhaustive marker
- Better naming
-
Mark
Control
type asnon exhaustive
-
Rename
ControlMessage
toControl
-
Remove protocol variant services
-
Disable keep-alive timer if not configured
-
Add write back-pressure to io dispatcher
- Use MqttService::connect_timeout() only for reading protocol version
- Release
- Use "async fn" in trait for Service definition
-
Handle QoS 0 messages when the client disconnect #164
-
Use io tags
- Fix KEEP-ALIVE timer handling
- Optimize KEEP-ALIVE timer
- Refactor io timers
- Fix keep-alive timeout handling
- Refactor slow frame timeout handling
- Remove slow frame timer if service is not ready
- Do not process data in read buffer after disconnect
- Use new ntex-io apis
- Fix v5::Subscribe/Unsubscribe packet properties encoding
- Send server ConnectAck without io flushing
- Fix typo
- Fix nested error handling for control service
- Fix Publish and Control error type
- Drop unneeded HandshakeError::Server
- Change handshake timeout behavior (renamed to connect timeout). Timeout handles slow client's Control frame.
- Refactor MqttError type
- Update ntex deps
- Update BufferService usage
- Fix client connector usage, fixes lifetime constraint
PipelineCall
is static
- Release v0.11.0
- Use ContainerCall, remove unsafe
- Fix Dispatcher impl, poll Container
instead of S
- Use ServiceCtx instead of Ctx
- Migrate to ntex-0.7
-
Expose size of prepared packet
-
Return packet and packet size from decoder
-
Adds non-blocking qos1 publish sender
-
Adds validation of topic filters in SUBSCRIBE and UNSUBSCRIBE (#136)
- Sink readiness depends on write back-pressure
-
Fix missing ready wakes up from InFlightService
-
Register Dispatcher waker when service is not ready
-
Change ConnectAck session_expiry_interval_secs type to Option
-
Introduce EncodeError::OverMaxPacketSize to differentiate failure to encode due to going over peer's Maximum packet size
- Revert builders refactoring
-
Fix dispatcher leak during stop process
-
Refactor client error
-
Drop derive_more dep
-
Exposed QoS at crate's level, disbanded types module
-
Added v5::Sink::force_close()
-
Added v5::Client::into_inner()
-
packet properties with clear defaults per spec are represented without Option, use default when absent; for example, Session Expiry Interval, Maximum QoS, Retain Available, etc. in Connect and ConnectAck
-
server-level settings for Maximum QoS, Topic Alias Maximum and Receive Maximum are now applied at ConnectAck construction. Any changes to ConnectAck in Handshake service are honored on connection level.
-
Setting RETAIN on PUBLISH when CONNACK stated
Retain Available: 0
triggers Protocol Error -
Setting Subscription Identifier on SUBSCRIBE when CONNACK stated
Subscription Identifier Available: 0
triggers Protocol Error -
Topic name with
+
or#
in it will trigger Protocol Error -
Protocol violation errors are now grouped under opaque ProtocolViolationError
-
Removed Client re-export under v3 module. Use v3::client::Client instead.
-
Migrate to ntex-0.6
-
Use thiserror::Error for error definitions
- Migrate to ntex-service 1.0
-
v5: Fix topic alias handling #122
-
v3: Allow to change outgoing in-flight limit
-
v3/v5: Fix sink inflight messages handling after local codec error #123
- v5: allow omitting properties length if it is 0 in packets without payload regardless of reason code or its presence.
-
Rename
Level
toTopicFilterLevel
for better spec compliance -
v5: Use correct reason code for MaxQosViolated error #117
- v3/v5: MqttSink::ready() is not ready until CONNACK get sent to peer
- Remove deprecated methods
- Renamed Topic into TopicFilter, TopicError into TopicFilterError
- Changes to topic filter validation: levels starting with
$
are allowed at any level and are recognized as system only at first position - Changes to topic matching logic: when topic filter is matched against another topic filter via TopicFilter.match_filter(), left hand side topic filter must be strict superset of all topics allowed with topic filter on right hand side
- Changes to topic matching logic: having
+/#
in the end of topic filter does not wrongly recover failed match on+
level - Validation is now part of TopicFilter instantiation, e.g. it is impossible to create non-validated topic filter from set of Levels.
- Level API is removed completely as level itself is not a valuable concept.
-
v3/v5: Allow to create
PublishBuilder
with predefined Publish packet -
v3: Allow to specify max allowed qos for server publishes
-
v5: Check max qos violations in server dispatcher
- Add .into_inner() client's helper for publish control message
-
v3: Send disconnect packet on sink close
-
v3: Treat disconnect packet as error on client side
-
Allow to get inner io stream and codec for negotiated clients
-
Remove inflight limit for client's control service
-
v3: Add Debug trait for client's ControlMessage
- v5: Encoding missing will properties: will_delay_interval_sec, is_utf8_payload, message_expiry_interval, content_type, response_topic, correlation_data, user_properties
-
v5: Account for property type byte in property length when encoding Subscribe packet
-
v5: Add Router::finish() helper method, it converts router to service factory
-
v3/v3: Clearify session type for Router
-
v3: Make topic generic type for MqttSink::publish() method
-
v5: Correct receive max value for v5 connector when broker omits value #100
-
Add support in-flight messages size back-pressure
-
Refactor handshake timeout handling
-
Add serializer and deserializer derive (#89)
-
Correct spelling of SubscribeAckReason::SharedSubsriptionNotSupported and DisconnectReasonCode::SharedSubsriptionNotSupported (#93)
-
Removed PubAckReason::ReceiveMaximumExceeded as this error code is only valid for DISCONNECT packets (#95)
-
Update subs.rs example to use confirm instead of subscribe (#97)
- Cleanup v3/v5 client connectors
- Optimize compilation times
- Cleanup MqttError types
- Upgrade to ntex 0.5.0
- Update to ntex-io 0.1.0-b.10
- Shutdown io stream after failed handshake
- Use IoBoxed for all server interfaces
- Upgrade to ntex 0.5 b4
- Upgrade to ntex-service 0.3.0
-
Better handling for io::Error
-
Upgrade to ntex 0.5.0-b.2
- Upgrade to ntex 0.5
-
Wait for close control message and inner services on dispatcher shutdown #78
-
Use default keepalive from Connect packet. #75
- Add memory pools support
- v5: Use variable length byte to encode the subscription ID #73
- Expose some control plane type constructors
- Do not poll service for readiness if it failed before
- Serialize control message handling
- Allow to extract error from control message
- Update ntex to 0.4
- v3: add ControlMessage::Error and ControlMessage::ProtocolError
- v5: add helper methods to client control publish message
- use new ntex's timer api
- v3: Boxed Packet::Connect to trim down Packet size
- v5: Boxed Packet::Connect and Packet::ConnAck variants to trim down Packet size
- v3/v5: Fixed nested with_queues calls in sink impl
-
v3/v5: PublishBuilder::send_at_least_once initiates publish synchronously
-
v3/v5: Publish::take_payload() replaces payload with empty bytes, returns existing
- v3: avoid nested borrow_mut() calls in sink on puback mismatch
- Re-export ClientRouter, SubscribeBuilder, UnsubscribeBuilder
- v3: Remove special treatment for "?" in publish's topic
- Upgrade to ntex-0.4
- Use
Handshake<Io>
instead ofcodec::Connect
for selector
- Add coonditional mqtt server selector
-
Process unhandled data on disconnect #51
-
Fix for panic while parsing MQTT version #52
-
v5: Fix reason string encoding
-
v5: Allow to set reason and properties to SUBACK
-
v5: Add a
packet()
function toSubscribe
andUnsubscribe
-
upgrade ntex, drop direct futures dependency
HandshakeAck::buffer_params()
replaces individual methods for buffer sizes
- Allow to override io buffer params
- Cleanup dependencies
- Upgrade to ntex v0.3
- Upgrade to ntex v0.2
- Upgrade to ntex v0.2-b.7
- Use ntex v0.2-b.5 framed types
- v5: Flush io stream before disconnect
- v5: Restore
set_properties
sink method
- Use ntex 0.2
- v5: Add ping and disconnect support to default control service
- Use pin-project-lite instead of pin-project
-
v5: Check publish service readiness error
-
io: Fix potential BorrowMut error in io dispatcher
- Fix public re-exports
- Fix out of bounds panic
- Better read back-pressure support
-
Use ashash instead on fxhash
-
Drop unneeded InOrder service usage
-
Refactor io dispatcher
-
Rename Connect/ConnectAck to Handshake/HandshakeAck
- v5: Allow to configure ConnectAck::max_qos value
-
Do not print publish payload in debug fmt
-
v5: Create topic handlers on firse use
- v5: Handle "Request Problem Information" flag
- v3: Fix borrow error in sink impl
- Allow to set packet id for sink operations
-
v5: Add helper method Connect::fail_with()
-
v5: Better name SubscribeIter::confirm()
- v5: Fix borrow error in MqttSink::close_with_reason()
- Add async fn
MqttSink::ready()
returns when there is available client credit.
-
ControlMessage
(v3/v5) and referenced types have#[derive(Debug)]
added -
Add
Deref
impl forSession<_>
-
v5: Do not override
max_packet_size
,receive_max
andtopic_alias_max
-
Fix packet ordering
-
Check default router service readiness
-
v5: Fix in/out bound frame size checks in codec
-
v5: Add PublishBuilder::set_properties() helper method
-
v3: Fix PublishBuilder methods
- v5: Add Error::ack_with() helper method
-
v3: New client api
-
v5: New client api
-
v5: Send publish packet returns ack or publish error
-
v5: set
max_qos
toAtLeastOnce
for serverConnectAck
response -
v5: do not set
session_expiry_interval_secs
prop
- v5: do not convert publish error to ack for QoS0 packets
-
v5: Handle packet id in use for publish, subscribe and unsubscribe packets
-
v5: Handle 16 concurrent control service requests
-
v3: Handle packet id in use for subscribe and unsubscribe packets
-
v3: Handle 16 concurrent control service requests
-
Removed ProtocolError::DuplicatedPacketId error
- v5: Fix max inflight check
-
v5: Add topic aliases support
-
v5: Forward publish errors to control service
-
Move keep-alive timeout to Framed dispatcher
-
Rename PublishBuilder::at_most_once/at_least_once into send_at_most_once/send_at_least_once
-
Replace ConnectAck::properties with ConnectAck::with
- Fix v5 decoding for properties going beyond properties boundary
-
Fix v5 server constraints
-
Add v3::Connect::service_unavailable()
-
Refactor Topics matching
- Add Publish::packet_mut() method
-
Add mqtt v5 protocol support
-
Refactor control packets handling
- Check for duplicated in-flight packet ids
- Update ntex
- Add disconnect timeout
- For to ntex namespace
- Add server handshake timeout
- Fix server keep-alive impl
- Allow to specify multi-pattern for topics
-
Migrate to
std::future
-
Support publish with QoS 1
- Initial release