Package conduit :: Package dataproviders :: Module AutoSync
[hide private]

Source Code for Module conduit.dataproviders.AutoSync

 1  import gobject 
 2  import logging 
 3  log = logging.getLogger("dataproviders.AutoSync") 
 4   
5 -class AutoSync(object):
6 - def __init__(self):
7 self.timeout = 5 8 self._timeout_id = 0
9
10 - def handle_added(self, uid):
11 self._handle_change()
12
13 - def handle_modified(self, uid):
14 self._handle_change()
15
16 - def handle_deleted(self, uid):
17 self._handle_change()
18
19 - def _handle_change(self):
20 # reset timer.. 21 if self._timeout_id > 0: 22 gobject.source_remove(self._timeout_id) 23 self._timeout_id = 0 24 25 # add a new one, or trigger sync immediately 26 if self.timeout > 0: 27 self._timeout_id = gobject.timeout_add(self.timeout * 1000, self._handle_sync) 28 else: 29 self.emit_change_detected()
30
31 - def _handle_sync(self):
32 self._timeout_id = 0 33 self.emit_change_detected()
34