}
@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();
+ }
}
};
import android.content.Context;
import android.os.Handler;
+import android.support.v4.util.Consumer;
import android.util.Log;
import com.acmetensortoys.ctfwstimer.CheckedAsyncDownloader;
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;
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
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;
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);
}
});
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() {
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); }
}
}
o.onMqttServerChanged(mBinder, mMqc.getServerURI());
}
o.onMqttServerEvent(mBinder, mMSE);
+ o.onHandbookFetch(mBinder, lastHandDL);
}
}
}