Source code for ssdaq.receivers.trigger_receiver

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


[docs]class TriggerPacketProtocol(asyncio.Protocol):
[docs] def __init__(self, loop, log): self.buffer = asyncio.Queue() self.loop = loop self.log = log.getChild("TriggerPacketProtocol")
[docs] def connection_made(self, transport): self.log.info("Connected to port") self.transport = transport
def datagram_received(self, data, addr): self.buffer.put_nowait((data, addr))
[docs]class TriggerPacketReceiver(ReceiverServer):
[docs] def __init__(self, ip: str, port: int, publishers: list): super().__init__(ip, port, publishers, "TriggerPacketReceiver") self.trans, self.tpp = self.setup_udp( lambda: TriggerPacketProtocol(self.loop, self.log) ) self.running = True self.mon = ReceiverMonSender("TriggerPacketReceiver", self.loop, self._context)
async def ct_relay(self): while self.running: packet = await self.tpp.buffer.get() self.mon.register_data_packet() await self.publish(packet[0])
if __name__ == "__main__": from ssdaq.core import publishers trpl = TriggerPacketReceiver( port=8307, ip="0.0.0.0", publishers=[publishers.ZMQTCPPublisher(ip="127.0.0.101", port=5555)], ) trpl.run()