From d500a25ab5415cc06811522437faaf5f322a2fd5 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Thu, 28 Jul 2022 13:17:11 -0700 Subject: [PATCH] params: add put_bool_nonblocking (#25292) * add bool flag * cleanup Co-authored-by: Willem Melching old-commit-hash: 1f087bceb4a6f569a2f703f348f70048c010ef04 --- common/params.py | 3 ++- common/params_pyx.pyx | 12 ++++-------- common/tests/test_params.py | 11 ++++++++++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/common/params.py b/common/params.py index 2cfca37129..b6be424d41 100644 --- a/common/params.py +++ b/common/params.py @@ -1,8 +1,9 @@ -from common.params_pyx import Params, ParamKeyType, UnknownKeyName, put_nonblocking # pylint: disable=no-name-in-module, import-error +from common.params_pyx import Params, ParamKeyType, UnknownKeyName, put_nonblocking, put_bool_nonblocking # pylint: disable=no-name-in-module, import-error assert Params assert ParamKeyType assert UnknownKeyName assert put_nonblocking +assert put_bool_nonblocking if __name__ == "__main__": import sys diff --git a/common/params_pyx.pyx b/common/params_pyx.pyx index b3b8248529..36c8cf777a 100755 --- a/common/params_pyx.pyx +++ b/common/params_pyx.pyx @@ -100,11 +100,7 @@ cdef class Params: return self.p.getParamPath(key_bytes).decode("utf-8") def put_nonblocking(key, val, d=""): - def f(key, val): - params = Params(d) - cdef string k = ensure_bytes(key) - params.put(k, val) - - t = threading.Thread(target=f, args=(key, val)) - t.start() - return t + threading.Thread(target=lambda: Params(d).put(key, val)).start() + +def put_bool_nonblocking(key, bool val, d=""): + threading.Thread(target=lambda: Params(d).put_bool(key, val)).start() diff --git a/common/tests/test_params.py b/common/tests/test_params.py index 906198871b..f99ac81a33 100644 --- a/common/tests/test_params.py +++ b/common/tests/test_params.py @@ -4,7 +4,7 @@ import tempfile import shutil import unittest -from common.params import Params, ParamKeyType, UnknownKeyName, put_nonblocking +from common.params import Params, ParamKeyType, UnknownKeyName, put_nonblocking, put_bool_nonblocking class TestParams(unittest.TestCase): def setUp(self): @@ -89,6 +89,15 @@ class TestParams(unittest.TestCase): assert q.get("CarParams") is None assert q.get("CarParams", True) == b"test" + def test_put_bool_non_blocking_with_get_block(self): + q = Params(self.tmpdir) + def _delayed_writer(): + time.sleep(0.1) + put_bool_nonblocking("CarParams", True, self.tmpdir) + threading.Thread(target=_delayed_writer).start() + assert q.get("CarParams") is None + assert q.get("CarParams", True) == b"1" + if __name__ == "__main__": unittest.main()