taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 0d04772c9f2b9b4d51f30c03b4fa38ddc8be192d
parent f622a036a96bfc17848151a019a83705afdd3c02
Author: Florian Dold <florian@dold.me>
Date:   Tue,  7 Jan 2025 10:48:49 +0100

-logging

Diffstat:
Mpackages/idb-bridge/taler-helper-sqlite3 | 38++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/packages/idb-bridge/taler-helper-sqlite3 b/packages/idb-bridge/taler-helper-sqlite3 @@ -7,9 +7,14 @@ import os print("started sqlite3 helper at", os.getcwd(), file=sys.stderr) enable_tracing = False + + def trace(*args): + if not enable_tracing: + return print("HELPER", *args, file=sys.stderr) + CMD_HELLO = 1 CMD_SHUTDOWN = 2 CMD_OPEN = 3 @@ -46,8 +51,7 @@ prep_handles = dict() def write_resp(req_id, cmd, payload=None): - if enable_tracing: - trace("sending response to request", req_id) + trace("sending response to request", req_id) outlen = 4 + 4 + 1 + (0 if payload is None else len(payload)) respstream.write(outlen.to_bytes(4)) respstream.write(req_id.to_bytes(4)) @@ -100,7 +104,7 @@ class PacketWriter: for row in rows: if len(row) != len(description): - raise Error("invariant violated") + raise Exception("invariant violated") for val in row: if val is None: self.write_uint8(TAG_NULL) @@ -114,7 +118,7 @@ class PacketWriter: self.write_uint8(TAG_INT) self.write_int64(val) else: - raise Error("unknown col type") + raise Exception("unknown col type") def reap(self): return b"".join(self.chunks) @@ -175,15 +179,17 @@ class PacketReader: if tag == TAG_BLOB: params[name] = pr.read_blob() continue - raise Error("tag not understood") + raise Exception("tag not understood") return params + def read_exactly(n): buf = cmdstream.read(n) if len(buf) != n: - raise Error("incomplete message") + raise Exception("incomplete message") return buf + def handle_query_failure(req_id, e): pw = PacketWriter() pw.write_string(str(e)) @@ -191,22 +197,21 @@ def handle_query_failure(req_id, e): pw.write_string(e.sqlite_errorname) write_resp(req_id, RESP_FAIL, pw.reap()) + while True: - if enable_tracing: - trace("reading command") + trace("reading command") buf_sz = cmdstream.read(4) if len(buf_sz) == 0: trace("end of input reached") sys.exit(0) elif len(buf_sz) != 4: - raise Error("incomplete message") + raise Exception("incomplete message") size = int.from_bytes(buf_sz) req_id = int.from_bytes(read_exactly(4)) rest = read_exactly(size - 8) pr = PacketReader(rest) cmd = pr.read_uint8() - if enable_tracing: - trace("received command:", cmd, "request_id:", req_id) + trace("received command:", cmd, "request_id:", req_id) if cmd == CMD_HELLO: write_resp(req_id, RESP_OK) @@ -214,7 +219,7 @@ while True: if cmd == CMD_OPEN: # open if dbconn is not None: - raise Error("DB already connected") + raise Exception("DB already connected") db_handle = pr.read_uint16() filename = pr.read_string() dbconn = sqlite3.connect(filename, autocommit=True, isolation_level=None) @@ -267,8 +272,7 @@ while True: write_resp(req_id, RESP_ROWLIST, pw.reap()) continue if cmd == CMD_STMT_RUN: - if enable_tracing: - trace("running statement") + trace("running statement") prep_id = pr.read_uint16() params = pr.read_params() dbconn, stmt = prep_handles[prep_id] @@ -276,12 +280,10 @@ while True: try: res = cursor.execute(stmt, params) except sqlite3.Error as e: - if enable_tracing: - trace("got sqlite error") + trace("got sqlite error") handle_query_failure(req_id, e) continue - if enable_tracing: - trace("running query succeeded") + trace("running query succeeded") if cursor.lastrowid is None: write_resp(req_id, RESP_OK) else: