allow to set timeout and maxsize; fixed a weird conditional

This commit is contained in:
2023-06-01 16:35:50 +02:00
parent cc4fc3268a
commit 89446f0c56

View File

@ -6,10 +6,11 @@ from .prodthread import ProdThread
class BSCache: class BSCache:
def __init__(self): def __init__(self, timeout=1000, maxsize=100):
self.timeout = timeout
self.channels = {} self.channels = {}
self.data = None self.data = None
self.pt = ProdThread(self.run) self.pt = ProdThread(self.run, maxsize=maxsize)
def __repr__(self): def __repr__(self):
return str(self.data) return str(self.data)
@ -26,9 +27,11 @@ class BSCache:
def run(self, running): def run(self, running):
configs = self.channels.values() configs = self.channels.values()
with source(channels=configs, receive_timeout=-1) as src: with source(channels=configs, receive_timeout=self.timeout) as src:
while running.is_set(): while running.is_set():
msg = src.receive() msg = src.receive()
if msg is None:
continue
data = repack(msg) data = repack(msg)
if data: if data:
yield data yield data
@ -39,7 +42,7 @@ class BSCache:
def get_var(self, name, modulo=None, offset=None): def get_var(self, name, modulo=None, offset=None):
if name is not "pid" and not name in self.channels: if name != "pid" and name not in self.channels:
if not is_available(name): if not is_available(name):
raise ValueError(f"channel {name} is not available") raise ValueError(f"channel {name} is not available")
cfg = make_channel_config(name, modulo, offset) cfg = make_channel_config(name, modulo, offset)