33import time
44from abc import ABCMeta , abstractmethod
55from collections .abc import Callable
6+ from dataclasses import dataclass
67from datetime import UTC , datetime
78from logging import Logger
89from queue import Queue
1920)
2021from robot_interface .telemetry .payloads import CloudHealthPayload
2122
22- MQTTQueueType = tuple [str , str , int , bool , Properties | None ]
23+
24+ @dataclass
25+ class MQTTQueueMessage :
26+ topic : str
27+ payload : str
28+ qos : int
29+ retain : bool
30+ properties : Properties | None
2331
2432
2533def props_expiry (seconds : int ) -> Properties :
@@ -56,8 +64,8 @@ def publish(
5664
5765
5866class MqttPublisher (MqttClientInterface ):
59- def __init__ (self , mqtt_queue : Queue [MQTTQueueType ]) -> None :
60- self .mqtt_queue : Queue [MQTTQueueType ] = mqtt_queue
67+ def __init__ (self , mqtt_queue : Queue [MQTTQueueMessage ]) -> None :
68+ self .mqtt_queue : Queue [MQTTQueueMessage ] = mqtt_queue
6169
6270 def publish (
6371 self ,
@@ -67,12 +75,12 @@ def publish(
6775 retain : bool = False ,
6876 properties : Properties | None = None ,
6977 ) -> None :
70- queue_message : tuple [ str , str , int , bool , Properties | None ] = (
71- topic ,
72- payload ,
73- qos ,
74- retain ,
75- properties ,
78+ queue_message : MQTTQueueMessage = MQTTQueueMessage (
79+ topic = topic ,
80+ payload = payload ,
81+ qos = qos ,
82+ retain = retain ,
83+ properties = properties ,
7684 )
7785 self .mqtt_queue .put (queue_message )
7886
@@ -81,13 +89,13 @@ class MqttTelemetryPublisher(Thread):
8189 def __init__ (
8290 self ,
8391 name : str ,
84- mqtt_queue : Queue [MQTTQueueType ],
92+ mqtt_queue : Queue [MQTTQueueMessage ],
8593 telemetry_method : Callable ,
8694 topic : str ,
8795 interval : float ,
8896 should_expire : bool ,
8997 ) -> None :
90- self .mqtt_queue : Queue [MQTTQueueType ] = mqtt_queue
98+ self .mqtt_queue : Queue [MQTTQueueMessage ] = mqtt_queue
9199 self .telemetry_method : Callable = telemetry_method
92100 self .topic : str = topic
93101 self .interval : float = interval
@@ -130,11 +138,11 @@ def run(self) -> None:
130138 if self .should_expire :
131139 properties = props_expiry (settings .MQTT_TELEMETRY_EXPIRY )
132140
133- queue_message : MQTTQueueType = (
134- topic ,
135- payload ,
136- 0 ,
137- False ,
138- properties ,
141+ queue_message : MQTTQueueMessage = MQTTQueueMessage (
142+ topic = topic ,
143+ payload = payload ,
144+ qos = 0 ,
145+ retain = False ,
146+ properties = properties ,
139147 )
140148 self .mqtt_queue .put (queue_message )
0 commit comments