aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/research/ResearchLogUploader.java
diff options
context:
space:
mode:
authorKurt Partridge <kep@google.com>2012-08-20 08:47:44 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-08-20 08:47:45 -0700
commit752c53760cd963c2bd88f327d032b6b92e1bd793 (patch)
tree526b6ecd82b2195332ce6b53191495b267851f61 /java/src/com/android/inputmethod/research/ResearchLogUploader.java
parent461f1942f94b00a9c75d882cdf9d82c1a758b22b (diff)
parent221e756fd7d585f0eb75377b851f23cad24ccd7f (diff)
downloadlatinime-752c53760cd963c2bd88f327d032b6b92e1bd793.tar.gz
latinime-752c53760cd963c2bd88f327d032b6b92e1bd793.tar.xz
latinime-752c53760cd963c2bd88f327d032b6b92e1bd793.zip
Merge changes I568c90d4,I4667f8f6 into jb-mr1-dev
* changes: ResearchLogging capture full n-gram data ResearchLogger to track simple statistics
Diffstat (limited to 'java/src/com/android/inputmethod/research/ResearchLogUploader.java')
-rw-r--r--java/src/com/android/inputmethod/research/ResearchLogUploader.java37
1 files changed, 27 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/research/ResearchLogUploader.java b/java/src/com/android/inputmethod/research/ResearchLogUploader.java
index 3b1213009..9904a1de2 100644
--- a/java/src/com/android/inputmethod/research/ResearchLogUploader.java
+++ b/java/src/com/android/inputmethod/research/ResearchLogUploader.java
@@ -27,7 +27,6 @@ import android.os.BatteryManager;
import android.util.Log;
import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.R.string;
import java.io.BufferedReader;
import java.io.File;
@@ -48,6 +47,7 @@ public final class ResearchLogUploader {
private static final String TAG = ResearchLogUploader.class.getSimpleName();
private static final int UPLOAD_INTERVAL_IN_MS = 1000 * 60 * 15; // every 15 min
private static final int BUF_SIZE = 1024 * 8;
+ protected static final int TIMEOUT_IN_MS = 1000 * 4;
private final boolean mCanUpload;
private final Context mContext;
@@ -55,8 +55,6 @@ public final class ResearchLogUploader {
private final URL mUrl;
private final ScheduledExecutorService mExecutor;
- private Runnable doUploadRunnable = new UploadRunnable(null, false);
-
public ResearchLogUploader(final Context context, final File filesDir) {
mContext = context;
mFilesDir = filesDir;
@@ -93,11 +91,15 @@ public final class ResearchLogUploader {
public void start() {
if (mCanUpload) {
- Log.d(TAG, "scheduling regular uploading");
- mExecutor.scheduleWithFixedDelay(doUploadRunnable, UPLOAD_INTERVAL_IN_MS,
- UPLOAD_INTERVAL_IN_MS, TimeUnit.MILLISECONDS);
- } else {
- Log.d(TAG, "no permission to upload");
+ mExecutor.scheduleWithFixedDelay(new UploadRunnable(null /* logToWaitFor */,
+ null /* callback */, false /* forceUpload */),
+ UPLOAD_INTERVAL_IN_MS, UPLOAD_INTERVAL_IN_MS, TimeUnit.MILLISECONDS);
+ }
+ }
+
+ public void uploadAfterCompletion(final ResearchLog researchLog, final Callback callback) {
+ if (mCanUpload) {
+ mExecutor.submit(new UploadRunnable(researchLog, callback, true /* forceUpload */));
}
}
@@ -106,7 +108,8 @@ public final class ResearchLogUploader {
// another upload happening right now, as it may have missed the latest changes.
// TODO: Reschedule regular upload tests starting from now.
if (mCanUpload) {
- mExecutor.submit(new UploadRunnable(callback, true));
+ mExecutor.submit(new UploadRunnable(null /* logToWaitFor */, callback,
+ true /* forceUpload */));
}
}
@@ -130,19 +133,33 @@ public final class ResearchLogUploader {
}
class UploadRunnable implements Runnable {
+ private final ResearchLog mLogToWaitFor;
private final Callback mCallback;
private final boolean mForceUpload;
- public UploadRunnable(final Callback callback, final boolean forceUpload) {
+ public UploadRunnable(final ResearchLog logToWaitFor, final Callback callback,
+ final boolean forceUpload) {
+ mLogToWaitFor = logToWaitFor;
mCallback = callback;
mForceUpload = forceUpload;
}
@Override
public void run() {
+ if (mLogToWaitFor != null) {
+ waitFor(mLogToWaitFor);
+ }
doUpload();
}
+ private void waitFor(final ResearchLog researchLog) {
+ try {
+ researchLog.awaitTermination(TIMEOUT_IN_MS, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
private void doUpload() {
if (!mForceUpload && (!isExternallyPowered() || !hasWifiConnection())) {
return;