51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
import json
|
|
import logging
|
|
|
|
from backend.cron import recorder_checker
|
|
from backend.websocket.base import socketio
|
|
|
|
logger = logging.getLogger("lrc.websocket.handlers")
|
|
|
|
recorder_state_checker = 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]))
|