From 7ff433304b30a0923f7331246e9931b847046c56 Mon Sep 17 00:00:00 2001 From: Uriziel Date: Fri, 28 Sep 2012 17:08:36 +0200 Subject: [PATCH] Minor updates and refactoring --- syncplay/client.py | 12 +++--------- syncplay/server.py | 20 ++++---------------- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index 1fddf59..90d4db0 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -71,7 +71,7 @@ class SyncClientProtocol(CommandProtocol): who, where, what, duration, size = args[0], args[1], None, None, None self.__syncplayClient.users.addUser(SyncplayClientManager.SyncplayUser(who, what, where, duration, size)) if what: - message = '%s is present and is playing \'%s\' (%s) in the room: \'%s\'' % (who, what, format_time(float(duration)), where) + message = '%s is present and is playing \'%s\' (%s) in the room: \'%s\'' % (who, what, format_time(float(duration)), where) # TODO: move to "add User" self.__syncplayClient.ui.showMessage(message) self.__syncplayClient.checkIfFileMatchesOthers() else: @@ -114,15 +114,10 @@ class SyncClientProtocol(CommandProtocol): @argumentCount(5) def playing(self, args): who, where, what, duration, size = args - message = '%s is playing \'%s\' (%s) in the room: \'%s\'' % (who, what, format_time(float(duration)), where) + message = '%s is playing \'%s\' (%s) in the room: \'%s\'' % (who, what, format_time(float(duration)), where) # TODO: move to "add User" self.__syncplayClient.ui.showMessage(message) self.__syncplayClient.users.addUser(SyncplayClientManager.SyncplayUser(who, what, where, duration, size)) self.__syncplayClient.checkIfFileMatchesOthers() - - @argumentCount(1) - def joined(self, args): - message = '%s joined' % args[0] - self.__syncplayClient.ui.showMessage(message) @argumentCount(2) def room(self, args): @@ -155,8 +150,7 @@ class SyncClientProtocol(CommandProtocol): except ValueError: return ctime /= 1000.0 - position /= 1000.0 - + position /= 1000.0 return counter, ctime, paused, position, who_changed_state class _MessagesSender(object): diff --git a/syncplay/server.py b/syncplay/server.py index b316f47..a1f42af 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -199,10 +199,7 @@ class SyncServerProtocol(CommandProtocol): self.__protocol.sendMessage('present', who, where, what, duration, size) else: self.__protocol.sendMessage('present', who, where) - - def send_joined(self, who): - self.__protocol.sendMessage('joined', who) - + def send_left(self, who): self.__protocol.sendMessage('left', who) @@ -268,7 +265,8 @@ class SyncFactory(Factory): watcher_proto.sender.send_hello(name) self.send_state_to(watcher) self.send_ping_to(watcher) - + self.broadcast(watcher, lambda receiver: receiver.watcher_proto.sender.send_room(watcher.name, watcher.room)) + def removeWatcher(self, watcher_proto): watcher = self.watchers.pop(watcher_proto, None) if not watcher: @@ -353,24 +351,20 @@ class SyncFactory(Factory): watcherPos = max(watcher.max_position, watcher.position + (0 if self.paused[watcher.room] else curtime-watcher.last_update)) minPos = watcherPos if watcherPos < min else min minWatcher = watcher - return minPos, minWatcher - + return minPos, minWatcher def pong_received(self, watcher_proto, value, ctime): watcher = self.watchers.get(watcher_proto) if not watcher: return - ping_time = watcher.pings_sent.pop(value, None) if ping_time is not None: curtime = time.time() watcher.last_ping_received = curtime watcher.ping = ping = (curtime - ping_time)/2 - if watcher.time_offset_data is not None: time_offset = curtime - (ctime + ping) watcher.time_offset_data.append((ping, time_offset)) - if len(watcher.time_offset_data) > 1: pmin = min(p for p,_ in watcher.time_offset_data) pmax = max(p for p,_ in watcher.time_offset_data) - pmin @@ -386,27 +380,21 @@ class SyncFactory(Factory): if len(watcher.time_offset_data) > 20: watcher.time_offset_data = None - #print watcher.name, 'last ping', watcher.ping, 'time offset %.6f' % watcher.time_offset - def send_ping_to(self, watcher): if not watcher.active: return if (time.time()-watcher.last_update_sent) > 8: self.removeWatcher(watcher.watcher_proto) return - chars = None while not chars or chars in watcher.pings_sent: chars = random_chars() - curtime = time.time() if curtime - watcher.last_ping_received > 8: watcher.watcher_proto.drop() return - watcher.watcher_proto.sender.send_ping(chars) watcher.pings_sent[chars] = time.time() - if len(watcher.pings_sent) > 30: watcher.pings_sent.pop(min((time, key) for key, time in watcher.pings_sent.iteritems())[1]) self.schedule_send_ping(watcher)