Coverage for zenmqtt/mqtt/ping.py: 100%
14 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-12 21:55 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-12 21:55 +0000
1from dataclasses import dataclass
3from zenmqtt.exceptions import MalformedPacketError
4from zenmqtt.mqtt.packet import BytesReader, FixedHeader, PacketType
5from zenmqtt.mqtt.utils import pack_fixed_header
7# PINGREQ and PINGRESP consist of the fixed header only:
8# reserved flags are 0x0, no variable header and no payload
11def pack_pingreq_packet() -> bytes:
12 return pack_fixed_header(PacketType.PINGREQ, 0x00, 0)
15@dataclass(frozen=True)
16class PingRespResult:
17 __slots__ = ()
20def parse_pingresp_packet(
21 fixed_header: FixedHeader, reader: BytesReader
22) -> PingRespResult:
23 assert fixed_header.packet_type == PacketType.PINGRESP
25 if fixed_header.flags != 0x00 or fixed_header.length != 0:
26 raise MalformedPacketError(f"Malformed PINGRESP packet: {fixed_header}")
28 return PingRespResult()