from time import time
from .config import readconfig
-from .GT06mod import handle_packet, make_response, LOGIN
+from .GT06mod import handle_packet, make_response, LOGIN, set_config
from .evstore import initdb, stow
+from .lookaside import prepare_response
CONF = "/etc/gps303.conf"
log = getLogger("gps303")
if __name__.endswith("__main__"):
- opts, _ = getopt(sys.argv[1:], "c:p:")
+ opts, _ = getopt(sys.argv[1:], "c:d")
opts = dict(opts)
- conf = readconfig(opts["c"] if "c" in opts else CONF)
+ conf = readconfig(opts["-c"] if "-c" in opts else CONF)
if sys.stdout.isatty():
log.addHandler(StreamHandler(sys.stderr))
- log.setLevel(DEBUG)
else:
log.addHandler(SysLogHandler(address="/dev/log"))
- log.setLevel(INFO)
+ log.setLevel(DEBUG if "-d" in opts else INFO)
+ log.info("starting with options: %s", opts)
- initdb(conf.get("daemon", "port"))
+ initdb(conf.get("daemon", "dbfn"))
+ set_config(conf)
ctlsock = socket(AF_INET, SOCK_STREAM)
ctlsock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
when = time()
if packet:
msg = handle_packet(packet, clntaddr, when)
- log.debug("%s from %s fd %d'", msg, clntaddr, fd)
+ log.debug("%s from %s fd %d", msg, clntaddr, fd)
if isinstance(msg, LOGIN):
imei = msg.imei
clnt_dict[fd] = (clntsock, clntaddr, imei)
- stow(clntaddr, when, imei, msg.proto, msg.payload)
- response = make_response(msg)
+ stow(
+ clntaddr,
+ when,
+ imei,
+ msg.length,
+ msg.proto,
+ msg.payload,
+ )
+ kwargs = prepare_response(conf, msg)
+ response = make_response(msg, **kwargs)
if response:
try:
# Ignore possibility of blocking
except OSError as e:
log.debug("sending to fd %d error %s", fd, e)
else:
+ # TODO: Also disconnect on HIBERNATION
log.info("disconnect fd %d imei %s", fd, imei)
pollset.unregister(fd)
clntsock.close()