X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2Fstorage.py;h=6047c39bfc9686fd0a0643564a10007792209b4e;hb=513eaed4a832748bd77294679939627eaaf69612;hp=9da1d6d7d1a475d5f0e2fbd7b4f83af26c83f363;hpb=4c173a5448990cd4da398be1bf3479bef17b1048;p=loctrkd.git diff --git a/gps303/storage.py b/gps303/storage.py index 9da1d6d..6047c39 100644 --- a/gps303/storage.py +++ b/gps303/storage.py @@ -1,5 +1,6 @@ """ Store zmq broadcasts to sqlite """ +from datetime import datetime, timezone from getopt import getopt from logging import getLogger from logging.handlers import SysLogHandler @@ -10,9 +11,11 @@ import zmq from . import common from .evstore import initdb, stow from .gps303proto import parse_message +from .zmsg import Bcast log = getLogger("gps303/storage") + def runserver(conf): dbname = conf.get("storage", "dbfn") log.info('Using Sqlite3 database "%s"', dbname) @@ -24,12 +27,17 @@ def runserver(conf): try: while True: - zmsg = zsub.recv() - imei = zmsg[1:17].decode() - packet = zmsg[17:] - msg = parse_message(packet) - log.debug("From IMEI %s: %s", imei, msg) - stow("", time(), imei, msg.length, msg.PROTO, msg.payload) + zmsg = Bcast(zsub.recv()) + msg = parse_message(zmsg.packet) + log.debug("IMEI %s from %s at %s: %s", zmsg.imei, zmsg.peeraddr, datetime.fromtimestamp(zmsg.when).astimezone(tz=timezone.utc), msg) + stow( + zmsg.peeraddr, + zmsg.when, + zmsg.imei, + msg.length, + msg.PROTO, + msg.payload, + ) except KeyboardInterrupt: pass