From d2b45c5442aeb0e02f251916ae1beb06830ef4c1 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Tue, 12 Mar 2013 18:15:36 +0100 Subject: render download progress --- module/remote/wsbackend/AsyncHandler.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'module/remote/wsbackend/AsyncHandler.py') diff --git a/module/remote/wsbackend/AsyncHandler.py b/module/remote/wsbackend/AsyncHandler.py index 5c08aa96d..99ffe9894 100644 --- a/module/remote/wsbackend/AsyncHandler.py +++ b/module/remote/wsbackend/AsyncHandler.py @@ -19,6 +19,7 @@ import re from Queue import Queue, Empty from threading import Lock +from time import time from mod_pywebsocket.msgutil import receive_message @@ -58,6 +59,7 @@ class AsyncHandler(AbstractHandler): req.interval = self.PROGRESS_INTERVAL req.events = self.EVENT_PATTERN req.mode = Mode.STANDBY + req.t = time() # time when update should be pushed self.clients.append(req) @lock @@ -120,6 +122,7 @@ class AsyncHandler(AbstractHandler): def mode_running(self, req): """ Listen for events, closes socket when returning True """ try: + # block length of update interval if necessary ev = req.queue.get(True, req.interval) try: self.send(req, ev) @@ -130,9 +133,15 @@ class AsyncHandler(AbstractHandler): self.send(req, ev) except Empty: + pass + + if req.t <= time(): # TODO: server status is not enough # modify core api to include progress? think of other needed information to show + # eta is quite wrong currently # notifications - self.send(req, self.api.getServerStatus()) - self.send(req, self.api.getProgressInfo()) \ No newline at end of file + self.send(req, self.api.getProgressInfo()) + + # update time for next update + req.t = time() + req.interval \ No newline at end of file -- cgit v1.2.3