]> www.average.org Git - loctrkd.git/blobdiff - loctrkd/watch.py
abstract protocol selection in `common`
[loctrkd.git] / loctrkd / watch.py
index a8a53b0dd62f04938bef519e200796986a45a3a4..bda952c259da36299fd5f8859b3c33363983720b 100644 (file)
@@ -2,11 +2,13 @@
 
 from configparser import ConfigParser
 from datetime import datetime, timezone
+from importlib import import_module
 from logging import getLogger
+from typing import Any, cast, List
 import zmq
 
 from . import common
-from .zx303proto import parse_message
+from .protomodule import ProtoModule
 from .zmsg import Bcast
 
 log = getLogger("loctrkd/watch")
@@ -22,8 +24,13 @@ def runserver(conf: ConfigParser) -> None:
     try:
         while True:
             zmsg = Bcast(zsub.recv())
-            msg = parse_message(zmsg.packet, zmsg.is_incoming)
-            print("I" if zmsg.is_incoming else "O", zmsg.imei, msg)
+            print("I" if zmsg.is_incoming else "O", zmsg.proto, zmsg.imei)
+            pmod = common.pmod_for_proto(zmsg.proto)
+            if pmod is not None:
+                msg = pmod.parse_message(zmsg.packet, zmsg.is_incoming)
+                print(msg)
+                if zmsg.is_incoming and hasattr(msg, "rectified"):
+                    print(msg.rectified())
     except KeyboardInterrupt:
         pass