import json import logging from backend.cron import async_cron_recorder_checker from backend.websocket.base import socketio logger = logging.getLogger("lrc.websocket.handlers") recorder_state_checker = async_cron_recorder_checker @socketio.on('request_recorder_state_updates') def handle_request_recorder_state_updates_msg(recorder_id=None): if recorder_id is None: logger.warning("No recorder_id communicated, ignoring!") return logger.info("Adding recorder {} to state checker".format(recorder_id)) recorder_state_checker.add_object_to_state_check(recorder_id) @socketio.on('force_recorder_state_update') def handle_force_recorder_state_update_msg(recorder_id=None): if recorder_id is None: logger.warning("No recorder_id communicated, ignoring!") return current_states = recorder_state_checker.get_current_state() for key in current_states: state = current_states[key] if state.get('id', None) == recorder_id: logger.debug("Sending state to: {}".format( 'recorder_state_update_{}'.format(recorder_id))) socketio.emit('recorder_state_update_{}'.format(recorder_id), json.dumps(state)) return logger.warning("Can't force update, no state found for recorder id {}.".format(recorder_id)) def send_state_update_to_recorders(recorder_results_dict: dict): if len(recorder_results_dict) <= 0: logger.debug("Sending state of recorders via web socket... => nothing to send!") return logger.debug("Sending state of recorders via web socket...") for recorder_id in recorder_results_dict: print(recorder_results_dict[recorder_id]) logger.debug("Sending state to: {}".format( 'recorder_state_update_{}'.format(recorder_results_dict[recorder_id].get('id')))) socketio.emit('recorder_state_update_{}'.format(recorder_results_dict[recorder_id].get('id')), json.dumps(recorder_results_dict[recorder_id]))