factor in time difference when determining common point

This commit is contained in:
Damien Elmes 2010-12-17 03:26:09 +09:00
parent 6860f64f28
commit 400ca9a8a2

View file

@ -100,6 +100,7 @@ class SyncTools(object):
self.deck = deck self.deck = deck
self.diffs = {} self.diffs = {}
self.serverExcludedTags = [] self.serverExcludedTags = []
self.timediff = 0
# Control # Control
########################################################################## ##########################################################################
@ -117,18 +118,16 @@ class SyncTools(object):
self.applyPayloadReply(res) self.applyPayloadReply(res)
self.deck.reset() self.deck.reset()
def prepareSync(self): def prepareSync(self, timediff):
"Sync setup. True if sync needed." "Sync setup. True if sync needed."
self.localTime = self.modified() self.localTime = self.modified()
self.remoteTime = self.server.modified() self.remoteTime = self.server.modified()
if self.localTime == self.remoteTime: if self.localTime == self.remoteTime:
return False return False
l = self._lastSync(); r = self.server._lastSync() l = self._lastSync(); r = self.server._lastSync()
# set lastSync to the lower of the two sides # set lastSync to the lower of the two sides, and account for slow
if l != r: # clocks & assume it took up to 10 seconds for the reply to arrive
self.deck.lastSync = min(l, r) self.deck.lastSync = min(l, r) - timediff - 10
else:
self.deck.lastSync = l
return True return True
def summaries(self): def summaries(self):
@ -1092,6 +1091,7 @@ class HttpSyncServerProxy(SyncServer):
raise SyncError(type="authFailed", status=d['status']) raise SyncError(type="authFailed", status=d['status'])
self.decks = d['decks'] self.decks = d['decks']
self.timestamp = d['timestamp'] self.timestamp = d['timestamp']
self.timediff = abs(self.timestamp - time.time())
def hasDeck(self, deckName): def hasDeck(self, deckName):
self.connect() self.connect()