// SPDX-FileCopyrightText: © 2026 Jeffrey C. Ollie // SPDX-License-Identifier: MIT //! MQTT 5.0 and 3.1.1, with no I/O in it. //! //! `protocol` is the wire format: packets, properties, topic matching, and the //! two data representations everything else is built from. `Connection` is a //! client session built on top of it -- packet identifiers, the QoS 1 and QoS 2 //! handshakes, flow control, topic aliases, keepalive and session resumption -- //! which takes bytes in, gives bytes out, and never touches a socket or a //! clock. `session` writes one down so that it survives the process as well as //! the connection. //! //! Nothing here names a transport, and nothing here allocates except //! `Connection`, which needs somewhere to keep an unacknowledged message until //! it is acknowledged. //! //! The `mqtt_client` module is the other half: it moves those bytes along a //! `std.Io.Reader` and a `std.Io.Writer`, and reconnects when one breaks. A //! program driving its own event loop wants this module and not that one. pub const protocol = @import("protocol.zig"); pub const Connection = @import("Connection.zig"); /// Writing a session down so that it survives the process, which is what makes /// QoS 1 and QoS 2 mean anything to a program that can be restarted. See /// `Connection.saveSession` and `Connection.loadSession`. pub const session = @import("session.zig"); test { _ = protocol; _ = Connection; _ = session; }