kilnController/ovenWatcher.py

35 wiersze
998 B
Python
Czysty Zwykły widok Historia

2013-11-24 15:00:46 +00:00
import threading,logging,json,time
log = logging.getLogger(__name__)
class OvenWatcher(threading.Thread):
def __init__(self,oven):
self.observers = []
threading.Thread.__init__(self)
self.daemon = True
2013-11-24 15:00:46 +00:00
self.oven = oven
self.start()
def run(self):
while True:
oven_state = self.oven.get_state()
self.notifyAll(oven_state)
time.sleep(0.5)
2013-11-24 15:15:06 +00:00
def addObserver(self,observer):
2013-11-24 15:00:46 +00:00
self.observers.append(observer)
2013-11-24 15:00:46 +00:00
def notifyAll(self,message):
message_json = json.dumps(message)
log.debug("sending to %d clients: %s"%(len(self.observers),message_json))
for wsock in self.observers:
if wsock:
try:
wsock.send(message_json)
except:
log.error("could not write to socket %s"%wsock)
2013-11-24 15:21:19 +00:00
self.observers.remove(wsock)
2013-11-24 15:00:46 +00:00
else:
2013-11-24 15:21:19 +00:00
self.observers.remove(wsock)