test multicontent stream
parent
5049d97a24
commit
e2f0e2d046
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue