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

View File

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