From: Nathaniel Wesley Filardo Date: Sun, 22 Sep 2019 13:31:32 +0000 (+0100) Subject: Handbook: push completed DL through callback chain X-Git-Tag: release-1.4~8 X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=c003ed00ec93fe28f67886ffdc019069669797ba;p=acmetensortoys-ctfws-android Handbook: push completed DL through callback chain --- diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookActivity.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookActivity.java index afeece1..de14641 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookActivity.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookActivity.java @@ -67,9 +67,14 @@ public class HandbookActivity extends AppCompatActivity { } @Override - public void onHandbookFetch(MainService.LocalBinder b) { + public void onHandbookFetch(MainService.LocalBinder b, CheckedAsyncDownloader.DL dl) { display(); - Toast.makeText(HandbookActivity.this, R.string.hand_new, Toast.LENGTH_SHORT).show(); + if (dl.result == CheckedAsyncDownloader.Result.RES_OK) { + Toast.makeText(HandbookActivity.this, + R.string.hand_new, + Toast.LENGTH_SHORT) + .show(); + } } }; diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookDownloader.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookDownloader.java index a96315c..c33107f 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookDownloader.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookDownloader.java @@ -2,6 +2,7 @@ package com.acmetensortoys.ctfwstimer; import android.content.Context; import android.os.Handler; +import android.support.v4.util.Consumer; import android.util.Log; import com.acmetensortoys.ctfwstimer.CheckedAsyncDownloader; @@ -24,12 +25,13 @@ public class HandbookDownloader implements IMqttMessageListener { private static final long HAND_MAX_LEN = 1024*1024; /* 1 MiB */ private final Context mCtx; - private final Runnable mDLFiniCB; + private final Consumer mDLFiniCB; private IMqttAsyncClient mMqc; private Handler mHdl; private Runnable nextSubRunnable; - public HandbookDownloader(Context ctx, Handler hdl, Runnable dlfinicb) { + public HandbookDownloader(Context ctx, Handler hdl, + Consumer dlfinicb) { this.mCtx = ctx; this.mHdl = hdl; this.mDLFiniCB = dlfinicb; @@ -110,17 +112,13 @@ public class HandbookDownloader implements IMqttMessageListener { protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); - Result result; + DL dl; synchronized (HandbookDownloader.this) { - DL dl = HandbookDownloader.this.download; - result = dl.result; + dl = HandbookDownloader.this.download; fini(); } - Log.d(TAG, "Post Ex: " + result); - if (result == Result.RES_OK) { - /* If we downloaded something new, go run the callback chain */ - HandbookDownloader.this.mDLFiniCB.run(); - } + Log.d(TAG, "Post Ex: " + dl.result); + HandbookDownloader.this.mDLFiniCB.accept(dl); } @Override diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java index 103e73a..9ef741e 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java @@ -58,7 +58,7 @@ public class MainActivity extends AppCompatActivity { } @Override - public void onHandbookFetch(MainService.LocalBinder b) { + public void onHandbookFetch(MainService.LocalBinder b, CheckedAsyncDownloader.DL dl) { ; } }; diff --git a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainService.java b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainService.java index 1d16d95..e0766d1 100644 --- a/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainService.java +++ b/mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainService.java @@ -9,6 +9,7 @@ import android.os.IBinder; import android.os.Looper; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.support.v4.util.Consumer; import android.util.Log; import com.acmetensortoys.ctfwstimer.lib.CtFwSGameStateManager; @@ -60,12 +61,14 @@ public class MainService extends Service { public MainService() { } // Handbook fetch logic; this is a singleton for the service, even as connections come and go. + private CheckedAsyncDownloader.DL lastHandDL; private HandbookDownloader mHandDL = new HandbookDownloader(this, new Handler(Looper.getMainLooper()), - new Runnable() { + new Consumer() { @Override - public void run() { - MainService.this.notifyHandbook(); + public void accept(CheckedAsyncDownloader.DL dl) { + lastHandDL = dl; + MainService.this.notifyHandbook(dl); } }); @@ -322,7 +325,7 @@ public class MainService extends Service { public interface Observer { void onMqttServerChanged(LocalBinder b, String sURL); void onMqttServerEvent(LocalBinder b, MqttServerEvent mse); - void onHandbookFetch(LocalBinder b); + void onHandbookFetch(LocalBinder b, CheckedAsyncDownloader.DL dl); } private final Set mObsvs = new HashSet<>(); private void notifyMSE() { @@ -341,9 +344,9 @@ public class MainService extends Service { for (Observer o : mObsvs) { o.onMqttServerChanged(mBinder, sURL); } } } - private void notifyHandbook() { + private void notifyHandbook(CheckedAsyncDownloader.DL dl) { synchronized(this) { - for (Observer o : mObsvs) { o.onHandbookFetch(mBinder); } + for (Observer o : mObsvs) { o.onHandbookFetch(mBinder, dl); } } } @@ -382,6 +385,7 @@ public class MainService extends Service { o.onMqttServerChanged(mBinder, mMqc.getServerURI()); } o.onMqttServerEvent(mBinder, mMSE); + o.onHandbookFetch(mBinder, lastHandDL); } } }