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