Skip to content
Snippets Groups Projects
Commit 063ddce3 authored by Frantisek Simon's avatar Frantisek Simon
Browse files

#78 Don't send synchronization data if user is connected using mobile data....

#78 Don't send synchronization data if user is connected using mobile data. Added retry mechanism if request fails
parent b48c2338
No related branches found
No related tags found
No related merge requests found
......@@ -166,7 +166,7 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
// synchronization helpers
private static Long lastPauseTimeForFullSync;
private static Long lastPauseTimeForUserSync;
private static Long lastTimeForUserSync = System.currentTimeMillis();
// run full synchronization 1 hour after pause
private static final long FULL_SYNC_DELAY = 60 * 60 * 1000;
......@@ -456,6 +456,11 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
}
stage.draw();
}
if (lastTimeForUserSync != null && getSelectedUser() != null && canSyncOnResume() && System.currentTimeMillis() - lastTimeForUserSync > USER_SYNC_DELAY) {
lastTimeForUserSync = System.currentTimeMillis();
ApplicationBus.getInstance().publishAsync(new StartIncrementalSynchronizationEvent(getSelectedUser().getId()));
}
}
public void addDisposable(Disposable disposable) {
......@@ -521,7 +526,6 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
if (!isScreenPaused) {
isScreenPaused = true;
lastPauseTimeForFullSync = System.currentTimeMillis();
lastPauseTimeForUserSync = System.currentTimeMillis();
Log.info(getClass(), "[ ------- Screen Paused ------- ]");
// save screen state
Map<String, String> screenState = new HashMap<String, String>();
......@@ -535,9 +539,6 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
if (lastPauseTimeForFullSync != null && canSyncOnResume() && System.currentTimeMillis() - lastPauseTimeForFullSync > FULL_SYNC_DELAY) {
lastPauseTimeForFullSync = null;
ApplicationBus.getInstance().publishAsync(new StartFullSynchronizationEvent(UserDAO.selectActiveUsers()));
} else if (lastPauseTimeForUserSync != null && getSelectedUser() != null && canSyncOnResume() && System.currentTimeMillis() - lastPauseTimeForUserSync > USER_SYNC_DELAY) {
lastPauseTimeForUserSync = null;
ApplicationBus.getInstance().publishAsync(new StartIncrementalSynchronizationEvent(getSelectedUser().getId()));
}
isScreenPaused = false;
Log.info(getClass(), "[ ------- Screen Resumed ------- ]");
......
......@@ -5,6 +5,7 @@ import com.badlogic.gdx.Net;
import com.badlogic.gdx.net.HttpRequestBuilder;
import com.badlogic.gdx.utils.JsonWriter;
import cz.nic.tablexia.Tablexia;
import cz.nic.tablexia.shared.rest.UserRestPath;
import cz.nic.tablexia.sync.work.SyncWork;
import cz.nic.tablexia.util.Log;
......@@ -49,6 +50,10 @@ public class RestSynchronizationService {
}
public static void doSyncWork(SyncWork work) {
if (Tablexia.connectionManager.isUsingMobileData()) {
Log.debug(RestSynchronizationService.class, "Using mobile data connection - synchronization disabled");
return;
}
work.send(new RestSynchronizationService(work.getUrl(), work.getHttpMethod(), work));
}
......
package cz.nic.tablexia.sync.work;
import com.badlogic.gdx.Net;
import com.badlogic.gdx.utils.Timer;
import cz.nic.tablexia.sync.RestSynchronizationService;
import cz.nic.tablexia.util.Log;
......@@ -10,6 +11,11 @@ import cz.nic.tablexia.util.Log;
*/
public abstract class SyncWork implements Net.HttpResponseListener {
private static final int MAX_RETRY_COUNT = 3;
// delay in seconds
private static final int RETRY_DELAY = 1;
private int retryCount = 0;
public String getHttpMethod() {
return Net.HttpMethods.POST;
}
......@@ -22,6 +28,17 @@ public abstract class SyncWork implements Net.HttpResponseListener {
@Override
public void failed(Throwable t) {
Log.err(this.getClass(), "sync request failed: " + t.getMessage(), t);
// retry mechanism if request fails
if (retryCount < MAX_RETRY_COUNT) {
Timer.schedule(new Timer.Task() {
@Override
public void run() {
retryCount++;
Log.debug(SyncWork.this.getClass(), "another try for request: " + getUrl());
send(new RestSynchronizationService(getUrl(), getHttpMethod(), SyncWork.this));
}
}, RETRY_DELAY);
}
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment