From 544d4dfd6146070176bc41ba81b936fb64c1714e Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 25 Jan 2020 12:38:38 +0100 Subject: [PATCH] Prepare operation partitioning --- app/src/main/java/eu/faircode/email/Core.java | 5 ++--- .../java/eu/faircode/email/ServiceSynchronize.java | 13 +++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index b3431dd810..a6ba54d613 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -125,7 +125,7 @@ class Core { static void processOperations( Context context, - EntityAccount account, EntityFolder folder, + EntityAccount account, EntityFolder folder, List ops, Store istore, Folder ifolder, State state) throws MessagingException, JSONException, IOException { @@ -133,10 +133,9 @@ class Core { Log.i(folder.name + " start process"); DB db = DB.getInstance(context); - List ops = db.operation().getOperations(folder.id); List processed = new ArrayList<>(); - Log.i(folder.name + " pending operations=" + ops.size()); + Log.i(folder.name + " executing operations=" + ops.size()); for (int i = 0; i < ops.size() && state.isRunning() && state.isRecoverable(); i++) { EntityOperation op = ops.get(i); if (processed.contains(op.id)) { diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 414d7180b4..2db7fa0829 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1109,18 +1109,18 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences PowerManager.PARTIAL_WAKE_LOCK, BuildConfig.APPLICATION_ID + ":folder." + folder.id); @Override - public void onChanged(final List operations) { - boolean process = false; + public void onChanged(final List _operations) { List ops = new ArrayList<>(); - for (EntityOperation op : operations) { + List operations = new ArrayList<>(); + for (TupleOperationEx op : _operations) { if (!handling.contains(op.id)) - process = true; + operations.add(op); ops.add(op.id); } handling = ops; - if (handling.size() > 0 && process) { - Log.i(folder.name + " operations=" + operations.size() + + if (operations.size() > 0 ) { + Log.i(folder.name + " queuing operations=" + operations.size() + " init=" + folder.initialize + " poll=" + folder.poll); executor.submit(new Helper.PriorityRunnable(operations.get(0).priority) { @@ -1156,6 +1156,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences Core.processOperations(ServiceSynchronize.this, account, folder, + operations, iservice.getStore(), ifolder, state);