def _readEvents(self, _read_func_cb): criteria = self._env.config.get("general", "criteria") if criteria: criteria = "alert && (%s)" % (criteria) else: criteria = "alert" try: criteria = IDMEFCriteria(criteria) except Exception as e: raise error.UserError("Invalid criteria provided '%s': %s" % (criteria, e)) last = time.time() while self._continue: msg = idmef.IDMEF() r = _read_func_cb(msg) if r: if criteria.match(msg): self._handle_event(msg) now = time.time() if now - last >= 1: context.wakeup(now) last = now
def run(self): last = time.time() for msg in self._receiver.run(): if msg and self._criteria.match(msg): self._handle_event(msg) now = time.time() if now - last >= 1: context.wakeup(now) last = now if not self._continue: break