state includes key and float q of n
parent
b8cbb244af
commit
12d8b5ef83
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue