Files
addon/lib/btserver/monitor.py
2019-04-23 14:32:53 +02:00

45 lines
1.0 KiB
Python

# -*- coding: utf-8 -*-
from threading import Thread, Lock, Event
class Monitor(Thread):
def __init__(self, client):
Thread.__init__(self)
self.daemon = True
self.listeners = []
self.lock = Lock()
self.wait_event = Event()
self.running = True
self.client = client
self.ses = None
self.client = client
def stop(self):
self.running = False
self.wait_event.set()
def add_listener(self, cb):
with self.lock:
if not cb in self.listeners:
self.listeners.append(cb)
def remove_listener(self, cb):
with self.lock:
try:
self.listeners.remove(cb)
except ValueError:
pass
def remove_all_listeners(self):
with self.lock:
self.listeners = []
def run(self):
while (self.running):
with self.lock:
for cb in self.listeners:
cb()
self.wait_event.wait(1.0)