refactored OvenWatcher

MAX31855-EH
Sebastian Steuer 2013-11-24 16:00:46 +01:00
rodzic a42e90fae9
commit a2d7d13ed1
2 zmienionych plików z 38 dodań i 32 usunięć

34
ovenWatcher.py 100644
Wyświetl plik

@ -0,0 +1,34 @@
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
self.oven = oven
self.start()
def run(self):
while True:
oven_state = self.oven.get_state()
self.notifyAll(oven_state)
time.sleep(1)
def addObserver(observer):
self.observers.append(observer)
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)
wsocks.remove(wsock)
else:
wsocks.remove(wsock)

Wyświetl plik

@ -1,10 +1,11 @@
import os,threading,time,logging,json
import os,logging,json
import bottle
from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketHandler, WebSocketError
from oven import Oven
from ovenWatcher import OvenWatcher
log_format = '%(asctime)s %(levelname)s %(name)s: %(message)s'
logging.basicConfig(level = logging.DEBUG, format = log_format)
@ -12,37 +13,8 @@ log = logging.getLogger("picoreflowd")
app = bottle.Bottle()
oven = Oven()
wsocks_control = []
class OvenWatcher(threading.Thread):
def __init__(self,oven):
self.watchers = []
threading.Thread.__init__(self)
self.daemon = True
self.oven = oven
self.start()
def run(self):
while True:
oven_state = self.oven.get_state()
self.notifyAll(oven_state)
time.sleep(1)
def notifyAll(self,message):
message_json = json.dumps(message)
log.debug("sending to %d clients: %s"%(len(self.watchers),message_json))
for wsock in self.watchers:
if wsock:
try:
wsock.send(message_json)
except:
log.error("could not write to socket %s"%wsock)
wsocks.remove(wsock)
else:
wsocks.remove(wsock)
ovenWatcher = OvenWatcher(oven)
wsocks_control = []
@app.route('/')
def index():
@ -109,7 +81,7 @@ def handle_websocket():
if not wsock:
abort(400, 'Expected WebSocket request.')
ovenWatcher.watchers.append(wsock)
ovenWatcher.addObserver(wsock)
while True:
try:
message = wsock.receive()