From 11772bc29d1d6eb445dd2de91a3a53eb9ef7f640 Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Sun, 21 Jun 2026 17:35:28 +0200 Subject: [PATCH] feat: gate_bus mask stash Co-Authored-By: Claude Opus 4.8 --- gates/gate_bus.py | 8 ++++++++ tests/test_gate_bus.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/gates/gate_bus.py b/gates/gate_bus.py index 0afff1c..4013ed1 100644 --- a/gates/gate_bus.py +++ b/gates/gate_bus.py @@ -33,3 +33,11 @@ class GateBus: raise GateCancelled() time.sleep(period) return cls.messages.pop(sid) + + @classmethod + def put_mask(cls, node_id, data): + cls.masks[str(node_id)] = data + + @classmethod + def pop_mask(cls, node_id): + return cls.masks.pop(str(node_id), None) diff --git a/tests/test_gate_bus.py b/tests/test_gate_bus.py index a111e41..231b29b 100644 --- a/tests/test_gate_bus.py +++ b/tests/test_gate_bus.py @@ -26,3 +26,13 @@ def test_arm_clears_stale_state(): gb.GateBus.arm("1") assert "1" not in gb.GateBus.messages assert gb.GateBus.cancelled is False + +def test_mask_stash_roundtrip(): + gb.GateBus.put_mask("9", b"PNGDATA") + assert gb.GateBus.pop_mask("9") == b"PNGDATA" + assert gb.GateBus.pop_mask("9") is None # popped + +def test_arm_clears_mask(): + gb.GateBus.put_mask("9", b"x") + gb.GateBus.arm("9") + assert gb.GateBus.pop_mask("9") is None