"""Implementation of heartbeat functionality""" from logging import Logger from threading import Thread from time import sleep from cloudsync.utils.helpers import * from cloudsync.common.enums import * class HeartBeatProvider: HEARTBEAT_FREQ = 20 send_heartbeat = False def __init__(self, logger: Logger, network_request_handler, output_channel): self.logger = logger self.network_request_handler = network_request_handler self.output_channel = output_channel self.thread = Thread(target=self.heartbeat, daemon=True) self.thread.start() def heartbeat(self): """ Sending heartbeat to UI: requesting device state """ while True: if self.send_heartbeat: # requesting device state from UI helpers_add_to_output_channel(output_channel=self.output_channel, message_body=str(OutboundMessageIDs.CS2UI_REQ_DEVICE_STATE.value) + ',0', success_message="CS2UI_REQ_DEVICE_STATE message added to output channel") sleep(self.HEARTBEAT_FREQ)