]> hydra-www.ietfng.org Git - acmetensortoys-ctfws-android/commitdiff
Handbook: push completed DL through callback chain
authorNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sun, 22 Sep 2019 13:31:32 +0000 (14:31 +0100)
committerNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sun, 22 Sep 2019 14:35:53 +0000 (15:35 +0100)
mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookActivity.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/HandbookDownloader.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainActivity.java
mobile/src/main/java/com/acmetensortoys/ctfwstimer/MainService.java

index afeece15f9db5700d29cb2797d8cd67a128e85da..de1464189d02cc4a114309047a5d2a9f57307ea6 100644 (file)
@@ -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();
+            }
         }
     };
 
index a96315c35e018f474fad2637fd05913d2707b1ee..c33107f124409e33581aeceb6f616d9a440e7ef1 100644 (file)
@@ -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<CheckedAsyncDownloader.DL> 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<CheckedAsyncDownloader.DL> 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
index 103e73a83ce361eb53bda1028355632ab3b9484f..9ef741eb6889f1ea8cbea7eadcab5fec5119ce41 100644 (file)
@@ -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) {
             ;
         }
     };
index 1d16d9527860696d01cc139b2a2e61b31fdbb21b..e0766d1122fbd485e282fd1935c68667165f1a1c 100644 (file)
@@ -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<CheckedAsyncDownloader.DL>() {
                 @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<Observer> 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);
                 }
             }
         }