message filter calls listener

This commit is contained in:
2026-03-09 20:00:43 +01:00
parent c6c1f26f32
commit 2bdc23b762
3 changed files with 22 additions and 14 deletions
+12 -9
View File
@@ -1,20 +1,23 @@
from urllib.parse import to_bytes
from msg_montainer import MsgContainer
from msg_sink import MsgSink
from typing import Callable
import re
class NmeaReceiver(MsgSink):
def __init__(self):
MsgSink.__init__(self)
self.filters_msg_type = []
def filter_by_msg_type(self, msg_type: str):
self.filters_msg_type.append(msg_type)
self.filters = []
def on_recv(self, msg: MsgContainer):
data = msg.data.decode(encoding="utf-8")
for pattern in self.filters_msg_type:
if re.match(pattern, data):
print(f"{self}: on_receive: {msg}")
for filter in self.filters:
if re.match(filter['re'], data):
if filter['listener'] is not None:
filter['listener'](msg)
def register_msg(self, msg_type: str, listener: Callable):
self.filters.append({'re': msg_type, 'listener': listener})
def _filter_by_msg_type(self, msg_type: str):
self.filters.append(msg_type)