state includes key and float q of n
parent
b8cbb244af
commit
12d8b5ef83
|
|
@ -9,14 +9,14 @@ def main():
|
||||||
f.seek(0, os.SEEK_END)
|
f.seek(0, os.SEEK_END)
|
||||||
while True:
|
while True:
|
||||||
line = f.readline().strip()
|
line = f.readline().strip()
|
||||||
key = line.strip("/")
|
|
||||||
if not line:
|
if not line:
|
||||||
sleep(0.25)
|
sleep(0.25)
|
||||||
continue
|
continue
|
||||||
|
key = line.strip("/").split()[0]
|
||||||
if not key in buckets:
|
if not key in buckets:
|
||||||
buckets[key] = False
|
buckets[key] = False
|
||||||
buckets[key] = line[0] != "/"
|
buckets[key] = False if line[0] == "/" else float(line.split()[-1])
|
||||||
print(sorted([int(i) for i in buckets if buckets[i]]))
|
print(sorted([(int(i),buckets[i]) for i in buckets if buckets[i]]))
|
||||||
|
|
||||||
def get_args():
|
def get_args():
|
||||||
ap = argparse.ArgumentParser()
|
ap = argparse.ArgumentParser()
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,11 @@ def readline():
|
||||||
foo = _input()
|
foo = _input()
|
||||||
return foo
|
return foo
|
||||||
|
|
||||||
|
class State():
|
||||||
|
def __init__(self, active, f):
|
||||||
|
self.active = active
|
||||||
|
self.f = f
|
||||||
|
|
||||||
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
|
||||||
|
|
@ -76,7 +81,7 @@ class Bucket():
|
||||||
if new_state == self.__last_state:
|
if new_state == self.__last_state:
|
||||||
return
|
return
|
||||||
self.__last_state = new_state
|
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):
|
def state(self):
|
||||||
return self.__last_state
|
return self.__last_state
|
||||||
|
|
@ -110,7 +115,7 @@ class CBSignals():
|
||||||
print(f"state is now {state}")
|
print(f"state is now {state}")
|
||||||
kill(
|
kill(
|
||||||
self.__pid,
|
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)
|
handler = lambda s, f: print("SIGNAL:", s)
|
||||||
signal.signal(self.__signal_triggered, handler)
|
signal.signal(self.__signal_triggered, handler)
|
||||||
|
|
@ -124,7 +129,7 @@ class CBAppend():
|
||||||
def cb(self, payload):
|
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"{'/' if not state else ''}{payload}\n")
|
f.write(f"{'/' if not state.active else ''}{payload} {state.f}\n")
|
||||||
return cb
|
return cb
|
||||||
|
|
||||||
class CBFork():
|
class CBFork():
|
||||||
|
|
@ -136,7 +141,7 @@ class CBFork():
|
||||||
cb_triggered = self.__triggered.cb(payload)
|
cb_triggered = self.__triggered.cb(payload)
|
||||||
cb_released = self.__released.cb(payload)
|
cb_released = self.__released.cb(payload)
|
||||||
def cb(state):
|
def cb(state):
|
||||||
if state:
|
if state.active:
|
||||||
return cb_triggered(state)
|
return cb_triggered(state)
|
||||||
return cb_released(state)
|
return cb_released(state)
|
||||||
return cb
|
return cb
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue