diff --git a/poc/py/state_to_buttons.py b/poc/py/state_to_buttons.py index 0bf2db0..80fb887 100644 --- a/poc/py/state_to_buttons.py +++ b/poc/py/state_to_buttons.py @@ -9,14 +9,14 @@ def main(): f.seek(0, os.SEEK_END) while True: line = f.readline().strip() - key = line.strip("/") if not line: sleep(0.25) continue + key = line.strip("/").split()[0] if not key in buckets: buckets[key] = False - buckets[key] = line[0] != "/" - print(sorted([int(i) for i in buckets if buckets[i]])) + buckets[key] = False if line[0] == "/" else float(line.split()[-1]) + print(sorted([(int(i),buckets[i]) for i in buckets if buckets[i]])) def get_args(): ap = argparse.ArgumentParser() diff --git a/poc/py/stream_to_state.py b/poc/py/stream_to_state.py index c71c64f..b525520 100644 --- a/poc/py/stream_to_state.py +++ b/poc/py/stream_to_state.py @@ -51,6 +51,11 @@ def readline(): foo = _input() return foo +class State(): + def __init__(self, active, f): + self.active = active + self.f = f + class Bucket(): def __init__(self, N, R, T, CB): self.q = 0.0 @@ -76,7 +81,7 @@ class Bucket(): if new_state == self.__last_state: return self.__last_state = new_state - self.CB(new_state) + self.CB(State(new_state, int(100*self.q/self.N)/100.0)) def state(self): return self.__last_state @@ -110,7 +115,7 @@ class CBSignals(): print(f"state is now {state}") kill( self.__pid, - self.__signal_triggered if state else self.__signal_released, + self.__signal_triggered if state.active else self.__signal_released, ) handler = lambda s, f: print("SIGNAL:", s) signal.signal(self.__signal_triggered, handler) @@ -124,7 +129,7 @@ class CBAppend(): def cb(self, payload): def cb(state): with open(self.__path, "a") as f: - f.write(f"{'/' if not state else ''}{payload}\n") + f.write(f"{'/' if not state.active else ''}{payload} {state.f}\n") return cb class CBFork(): @@ -136,7 +141,7 @@ class CBFork(): cb_triggered = self.__triggered.cb(payload) cb_released = self.__released.cb(payload) def cb(state): - if state: + if state.active: return cb_triggered(state) return cb_released(state) return cb