test multicontent stream

master
Bel LaPointe 2022-04-11 07:35:00 -06:00
parent 5049d97a24
commit e2f0e2d046
2 changed files with 15 additions and 13 deletions

View File

@ -25,14 +25,16 @@ def with_(N, R, T, p):
released = CBAppend(p) released = CBAppend(p)
cb = CBFork(triggered, released) cb = CBFork(triggered, released)
bucket = Bucket(N, R, T, cb.cb()) buckets = {}
while True: while True:
got = readline() got = readline()
if got: if not got:
bucket.push() [buckets[i].pop() for i in buckets]
else: else:
bucket.pop() if not got in buckets:
buckets[got] = Bucket(N, R, T, cb.cb(got))
buckets[got].push()
def readline(): def readline():
def __input(*args): def __input(*args):
@ -47,9 +49,9 @@ def readline():
signal.signal(signal.SIGALRM, __input) signal.signal(signal.SIGALRM, __input)
signal.alarm(timeout) signal.alarm(timeout)
foo = _input() foo = _input()
return not foo is None return foo
class Bucket: class Bucket():
def __init__(self, N, R, T, CB): def __init__(self, N, R, T, CB):
self.q = 0.0 self.q = 0.0
self.N = N self.N = N
@ -103,7 +105,7 @@ class CBSignals():
self.__signal_triggered = signal_triggered self.__signal_triggered = signal_triggered
self.__signal_released = signal_released self.__signal_released = signal_released
def cb(self): def cb(self, payload):
def cb(state): def cb(state):
print(f"state is now {state}") print(f"state is now {state}")
kill( kill(
@ -119,10 +121,10 @@ class CBAppend():
def __init__(self, path): def __init__(self, path):
self.__path = path self.__path = path
def cb(self): def cb(self, payload):
def cb(state): def cb(state):
with open(self.__path, "a") as f: with open(self.__path, "a") as f:
f.write(f"{state}\n") f.write(f"{'/' if not state else ''}{payload}\n")
return cb return cb
class CBFork(): class CBFork():
@ -130,9 +132,9 @@ class CBFork():
self.__triggered = triggered self.__triggered = triggered
self.__released = released self.__released = released
def cb(self): def cb(self, payload):
cb_triggered = self.__triggered.cb() cb_triggered = self.__triggered.cb(payload)
cb_released = self.__released.cb() cb_released = self.__released.cb(payload)
def cb(state): def cb(state):
if state: if state:
return cb_triggered(state) return cb_triggered(state)

View File

@ -11,7 +11,7 @@ trap cleanup EXIT
python3 ./state_to_buttons.py & python3 ./state_to_buttons.py &
( (
while echo ""; do while echo $((RANDOM%2)); do
if [ 0 == $((RANDOM%4)) ]; then if [ 0 == $((RANDOM%4)) ]; then
sleep 3 sleep 3
fi fi