From e43aad1e42fc1b97d40f89522ec7dc9c4f2282e9 Mon Sep 17 00:00:00 2001 From: GonzoBS <18075868+GonzoBS@users.noreply.github.com> Date: Sun, 6 Nov 2022 17:36:28 +0100 Subject: [PATCH] Update doubleFilter.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Probleme mit dem double Filter. Immer wenn die Liste nach Zeit gelöscht wird, wird das nächste doppelte Paket als ok durchgelassen. Die Liste ist dann bis auf einen Eintrag leer, der erste Eintrag wird aber nicht auf Duplikat geprüft. Einstellung ist RIC, SUBRIC, Message. Die Zeit habe ich zum testen auf 2 sekunden gestellt. type: module res: filter.doubleFilter config: ignoreTime: 2 maxEntry: 40 pocsagFields: ric subric message --- module/filter/doubleFilter.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module/filter/doubleFilter.py b/module/filter/doubleFilter.py index 4b0a20a..37a7dc7 100644 --- a/module/filter/doubleFilter.py +++ b/module/filter/doubleFilter.py @@ -69,6 +69,11 @@ class BoswatchModule(ModuleBase): def _check(self, bwPacket, filterFields): self._filterLists[bwPacket.get("mode")].insert(0, bwPacket) + for listPacket in self._filterLists[bwPacket.get("mode")][1:]: # [1:] skip first entry, thats the new one + if all(listPacket.get(x) == bwPacket.get(x) for x in filterFields): + logging.debug("found duplicate: %s", bwPacket.get("mode")) + return False + # delete entries that are to old counter = 0 for listPacket in self._filterLists[bwPacket.get("mode")][1:]: # [1:] skip first entry, thats the new one @@ -83,10 +88,5 @@ class BoswatchModule(ModuleBase): logging.debug("MaxEntry reached - delete oldest") self._filterLists[bwPacket.get("mode")].pop() - for listPacket in self._filterLists[bwPacket.get("mode")][1:]: # [1:] skip first entry, thats the new one - if all(listPacket.get(x) == bwPacket.get(x) for x in filterFields): - logging.debug("found duplicate: %s", bwPacket.get("mode")) - return False - logging.debug("doubleFilter ok") return None