X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=loctrkd%2F__main__.py;h=8808c8a31c092fdc78dc2a674f5932740622a865;hb=c3ce1475075c195bbdbd4d2a1c245afbb7e745df;hp=14c33f32728a5a0dbe63e5266f430d9577429341;hpb=c602ee4c0f76feb819010a17e426de55b3ad89bd;p=loctrkd.git diff --git a/loctrkd/__main__.py b/loctrkd/__main__.py index 14c33f3..8808c8a 100644 --- a/loctrkd/__main__.py +++ b/loctrkd/__main__.py @@ -11,32 +11,15 @@ from typing import Any, cast, List, Tuple, Type, Union import zmq from . import common +from .protomodule import ProtoModule from .zmsg import Bcast, Resp log = getLogger("loctrkd") -class ProtoModule: - @staticmethod - def proto_handled(proto: str) -> bool: - ... - - @staticmethod - def class_by_prefix(prefix: str) -> Any: - ... - - -pmods: List[ProtoModule] = [] - - def main( conf: ConfigParser, opts: List[Tuple[str, str]], args: List[str] ) -> None: - global pmods - pmods = [ - cast(ProtoModule, import_module("." + modnm, __package__)) - for modnm in conf.get("collector", "protocols").split(",") - ] # Is this https://github.com/zeromq/pyzmq/issues/1627 still not fixed?! zctx = zmq.Context() # type: ignore zpush = zctx.socket(zmq.PUSH) # type: ignore @@ -49,12 +32,8 @@ def main( imei = args[0] cmd = args[1] args = args[2:] - handled = False - for pmod in pmods: - if pmod.proto_handled(cmd): - handled = True - break - if not handled: + pmod = common.pmod_for_proto(cmd) + if pmod is None: raise NotImplementedError(f"No protocol can handle {cmd}") cls = pmod.class_by_prefix(cmd) if isinstance(cls, list):