import json import logging mainLogger = logging.getLogger("hugvey") # hyper verbose log level. Have it here, becase it needs to be _somewhere_ LOG_BS = 5 def getTopic(hugvey_id): if hugvey_id > 99: raise Exception("Incompatible with hugvey id > 99") # We will have to zero-fill the number (01 instead of 1), because of how zmq # topic subscription works: subscribing to hv1 also brings in messages for # hv10 hv11 and hv1whatever, hence only hv01, hv02 etc is unique return "hv{:02}".format(hugvey_id) def zmqSend(socket, hugvey_id, msg): log = mainLogger.getChild("{}".format(hugvey_id)).getChild("communication") log.debug("SEND: {}".format(msg)) msgData = json.dumps(msg) topic = getTopic(hugvey_id) log.debug("Send 0mq to {} containing {}".format(topic, msg)) socket.send_multipart([topic.encode(), msgData.encode()]) async def zmqReceive(socket): topic, msg = await socket.recv_multipart() hugvey_id = int(topic.decode()[2:]) mainLogger.getChild("{}".format(hugvey_id)).getChild("communication").debug( "Received 0mq messages for Hugvey #{} containing {}".format(hugvey_id, msg.decode()) ) return hugvey_id, json.loads(msg.decode())