blob: 6b0232bfb286b9e2d26a4fe50f88c92be5a7c945 [file] [log] [blame]
Holger Hans Peter Freythere7ae51f2018-02-25 21:10:16 +00001
2from osmo_gsm_tester import log
3from functools import partial
4
5import time
6
7
8class EventServer(log.Origin):
9 """
10 Listen for AF_UNIX/SOCK_DGRAM messages from test apps and
11 forward them.
12 """
13 def __init__(self, name, path):
14 super().__init__(log.C_RUN, name)
15 self._path = path
16 self._handlers = []
17
18 def register(self, cb):
19 self._handlers.append(cb)
20
21 def server_path(self):
22 return self._path
23
24 def listen(self, loop):
25 self._server = loop.create_unix_server(self.read_cb, self._path)
26
27 def read_cb(self, obj, mask):
28 # addresss doesn't give us the remote but currently we don't
29 # need it.
30 (data, address) = self._server.recvfrom(4096)
31 now = time.clock_gettime(time.CLOCK_MONOTONIC)
32 for handler in self._handlers:
33 handler(data, now)