Source code for ssdaq.receivers.timestamp_receiver

from ssdaq.core.receiver_server import ReceiverServer
from .mon_sender import ReceiverMonSender
import zmq

from ssdaq.data._dataimpl import CDTS_pb2


[docs]class TimestampReceiver(ReceiverServer):
[docs] def __init__(self, ip: str, port: int, publishers: list): super().__init__(ip, port, publishers, "TimestampReceiver") self.running = True # The ReceiverServer already has a zmq context self.receiver = self._context.socket(zmq.SUB) connectionstr = "tcp://{}:{}".format(ip, port) self.log.info( "Setting timestamp zmq subscriber server at {}".format(connectionstr) ) self.receiver.connect(connectionstr) self.receiver.setsockopt_string(zmq.SUBSCRIBE, "") self._setup = True self.mon = ReceiverMonSender("TimestampReceiver", self.loop, self._context)
async def ct_subscribe(self): while self.running: packet = await self.receiver.recv() tb = CDTS_pb2.TriggerBunch() tb.ParseFromString(packet) self.mon.register_data_packet() for tm in tb.triggers: await self.publish(tm.SerializeToString())
if __name__ == "__main__": from ssdaq.core import publishers trpl = TimestampReceiver( port=6666, ip="192.168.101.102", publishers=[publishers.ZMQTCPPublisher(ip="127.0.0.101", port=9999)], ) trpl.run()