User factory method for creating SocketConnection object for Tornadio2

master
Gina Häußge 2013-03-19 21:07:47 +01:00
parent 874a7421e9
commit b27e1ce15e
1 changed files with 10 additions and 2 deletions

View File

@ -32,7 +32,7 @@ userManager = None
#~~ Printer state
class PrinterStateConnection(tornadio2.SocketConnection):
def __init__(self, session, endpoint=None):
def __init__(self, printer, gcodeManager, userManager, session, endpoint=None):
tornadio2.SocketConnection.__init__(self, session, endpoint)
self._logger = logging.getLogger(__name__)
@ -44,6 +44,10 @@ class PrinterStateConnection(tornadio2.SocketConnection):
self._messageBacklog = []
self._messageBacklogMutex = threading.Lock()
self._printer = printer
self._gcodeManager = gcodeManager
self._userManager = userManager
def on_open(self, info):
self._logger.info("New connection from client")
# Use of global here is smelly
@ -541,7 +545,7 @@ class Server():
logger.info("Listening on http://%s:%d" % (self._host, self._port))
app.debug = self._debug
self._router = tornadio2.TornadioRouter(PrinterStateConnection)
self._router = tornadio2.TornadioRouter(self._createSocketConnection)
self._tornado_app = Application(self._router.urls + [
(".*", FallbackHandler, {"fallback": WSGIContainer(app)})
@ -550,6 +554,10 @@ class Server():
self._server.listen(self._port, address=self._host)
IOLoop.instance().start()
def _createSocketConnection(self, session, endpoint=None):
global printer, gcodeManager, userManager
return PrinterStateConnection(printer, gcodeManager, userManager, session, endpoint)
def _initSettings(self, configfile, basedir):
s = settings(init=True, basedir=basedir, configfile=configfile)