""" For when responding to the terminal is not trivial """
+from configparser import ConfigParser
from datetime import datetime, timezone
from logging import getLogger
from struct import pack
log = getLogger("gps303/termconfig")
-def runserver(conf):
- termconfig = common.normconf(conf["termconfig"])
- zctx = zmq.Context()
- zsub = zctx.socket(zmq.SUB)
+def runserver(conf: ConfigParser) -> None:
+ # Is this https://github.com/zeromq/pyzmq/issues/1627 still not fixed?!
+ zctx = zmq.Context() # type: ignore
+ zsub = zctx.socket(zmq.SUB) # type: ignore
zsub.connect(conf.get("collector", "publishurl"))
for proto in (
STATUS.PROTO,
POSITION_UPLOAD_INTERVAL.PROTO,
):
zsub.setsockopt(zmq.SUBSCRIBE, topic(proto))
- zpush = zctx.socket(zmq.PUSH)
+ zpush = zctx.socket(zmq.PUSH) # type: ignore
zpush.connect(conf.get("collector", "listenurl"))
try:
log.error(
"%s does not expect externally provided response", msg
)
+ if zmsg.imei is not None and conf.has_section(zmsg.imei):
+ termconfig = common.normconf(conf[zmsg.imei])
+ elif conf.has_section("termconfig"):
+ termconfig = common.normconf(conf["termconfig"])
+ else:
+ termconfig = {}
kwargs = {}
if isinstance(msg, STATUS):
kwargs = {
zpush.send(resp.packed)
except KeyboardInterrupt:
- pass
+ zsub.close()
+ zpush.close()
+ zctx.destroy() # type: ignore
if __name__.endswith("__main__"):