Fix up to work with python 3.4 and 3.5 take 2

This commit is contained in:
Tim Bentley 2016-06-06 21:33:28 +01:00
parent ba1eac8cd3
commit 25ca35f420
1 changed files with 29 additions and 59 deletions

View File

@ -111,65 +111,35 @@ class OpenWSServer(RegistryProperties, OpenLPMixin):
loop += 1 loop += 1
time.sleep(0.1) time.sleep(0.1)
if sys.version_info >= (3, 5): @staticmethod
@staticmethod @asyncio.coroutine
async def handle_websocket(request, path): def handle_websocket(request, path):
""" """
Handle web socket requests and return the poll information. Handle web socket requests and return the poll information.
Check ever 0.5 seconds to get the latest postion and send if changed. Check ever 0.5 seconds to get the latest postion and send if changed.
Only gets triggered when 1st client attaches Only gets triggered when 1st client attaches
:param request: request from client :param request: request from client
:param path: not used - future to register for a different end point :param path: not used - future to register for a different end point
:return: :return:
""" """
log.debug("web socket handler registered with client") log.debug("web socket handler registered with client")
previous_poll = None previous_poll = None
previous_main_poll = None previous_main_poll = None
openlppoll = Registry().get('OpenLPPoll') openlppoll = Registry().get('OpenLPPoll')
if path == '/poll': if path == '/poll':
while True: while True:
current_poll = openlppoll.poll() current_poll = openlppoll.poll()
if current_poll != previous_poll: if current_poll != previous_poll:
await request.send(current_poll) yield from request.send(current_poll)
previous_poll = current_poll previous_poll = current_poll
await asyncio.sleep(0.2) yield from asyncio.sleep(0.2)
elif path == '/main_poll': elif path == '/main_poll':
while True: while True:
main_poll = openlppoll.main_poll() main_poll = openlppoll.main_poll()
if main_poll != previous_main_poll: if main_poll != previous_main_poll:
await request.send(main_poll) yield from request.send(main_poll)
previous_main_poll = main_poll previous_main_poll = main_poll
await asyncio.sleep(0.2) yield from asyncio.sleep(0.2)
else:
@staticmethod
@asyncio.coroutine
def handle_websocket(request, path):
"""
Handle web socket requests and return the poll information.
Check ever 0.5 seconds to get the latest postion and send if changed.
Only gets triggered when 1st client attaches
:param request: request from client
:param path: not used - future to register for a different end point
:return:
"""
log.debug("web socket handler registered with client")
previous_poll = None
previous_main_poll = None
openlppoll = Registry().get('OpenLPPoll')
if path == '/poll':
while True:
current_poll = openlppoll.poll()
if current_poll != previous_poll:
yield from request.send(current_poll)
previous_poll = current_poll
yield from asyncio.sleep(0.2)
elif path == '/main_poll':
while True:
main_poll = openlppoll.main_poll()
if main_poll != previous_main_poll:
yield from request.send(main_poll)
previous_main_poll = main_poll
yield from asyncio.sleep(0.2)
def stop_server(self): def stop_server(self):
""" """