]> code.delx.au - offlineimap/blobdiff - offlineimap/syncmaster.py
Checkpointing work on mailbox deletion
[offlineimap] / offlineimap / syncmaster.py
index 64f2380b3fc86466300317e0debb9a6ef47cd0bf..22e126fa5a856ce2e2cd9fe4f6f889ee3eff6ef7 100644 (file)
@@ -26,8 +26,8 @@ import re, os, os.path, offlineimap, sys
 from ConfigParser import ConfigParser
 from threading import *
 
-def syncaccount(threads, config, accountname):
-    account = SyncableAccount(config, accountname)
+def syncaccount(threads, config, accountname, folderhash, folderhashlock):
+    account = SyncableAccount(config, accountname, folderhash, folderhashlock)
     thread = InstanceLimitedThread(instancename = 'ACCOUNTLIMIT',
                                    target = account.syncrunner,
                                    name = "Account sync %s" % accountname)
@@ -36,11 +36,26 @@ def syncaccount(threads, config, accountname):
     threads.add(thread)
     
 def syncitall(accounts, config):
+    folderhash = {'___sem': Semaphore(0)}
+    folderhashlock = Lock()
     currentThread().setExitMessage('SYNC_WITH_TIMER_TERMINATE')
     ui = UIBase.getglobalui()
     threads = threadutil.threadlist()
     mbnames.init(config, accounts)
+
+    accountcout = 0
+    for accountname in accounts:
+        syncaccount(threads, config, accountname, folderhash, folderhashlock)
+        accountcount += 1
+
+    # Gather up folder info
+    for i in range(0, accountcount):
+        folderhash['___sem'].acquire()
+
+    # Now we can tally.
+    srcnames = 
     for accountname in accounts:
-        syncaccount(threads, config, accountname)
+        
+        
     # Wait for the threads to finish.
     threads.reset()