From ba1eac8cd31b40f0f719a4e7104ba5448ed38d34 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 6 Jun 2016 21:27:55 +0100 Subject: [PATCH] Fix up to work with python 3.4 and 3.5 --- openlp/core/lib/api/wsserver.py | 88 ++++++++++++++++++++++----------- 1 file changed, 60 insertions(+), 28 deletions(-) diff --git a/openlp/core/lib/api/wsserver.py b/openlp/core/lib/api/wsserver.py index 9a2559471..4c450cca9 100644 --- a/openlp/core/lib/api/wsserver.py +++ b/openlp/core/lib/api/wsserver.py @@ -29,6 +29,7 @@ import asyncio import websockets import logging import time +import sys from PyQt5 import QtCore @@ -110,34 +111,65 @@ class OpenWSServer(RegistryProperties, OpenLPMixin): loop += 1 time.sleep(0.1) - @staticmethod - async 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: - await request.send(current_poll) - previous_poll = current_poll - await asyncio.sleep(0.2) - elif path == '/main_poll': - while True: - main_poll = openlppoll.main_poll() - if main_poll != previous_main_poll: - await request.send(main_poll) - previous_main_poll = main_poll - await asyncio.sleep(0.2) + if sys.version_info >= (3, 5): + @staticmethod + async 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: + await request.send(current_poll) + previous_poll = current_poll + await asyncio.sleep(0.2) + elif path == '/main_poll': + while True: + main_poll = openlppoll.main_poll() + if main_poll != previous_main_poll: + await request.send(main_poll) + previous_main_poll = main_poll + await 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): """