mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-11 04:08:42 +00:00
63 lines
1.9 KiB
Java
63 lines
1.9 KiB
Java
![]() |
package org.thoughtcrime.securesms.gcm;
|
||
|
|
||
|
import android.content.Context;
|
||
|
|
||
|
import androidx.annotation.NonNull;
|
||
|
import androidx.annotation.WorkerThread;
|
||
|
|
||
|
import org.thoughtcrime.securesms.IncomingMessageProcessor;
|
||
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||
|
import org.thoughtcrime.securesms.logging.Log;
|
||
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||
|
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
|
||
|
|
||
|
import java.io.IOException;
|
||
|
import java.util.concurrent.TimeUnit;
|
||
|
|
||
|
/**
|
||
|
* Retrieves messages over the REST endpoint.
|
||
|
*/
|
||
|
public class RestStrategy implements MessageRetriever.Strategy {
|
||
|
|
||
|
private static final String TAG = Log.tag(RestStrategy.class);
|
||
|
|
||
|
private static final long SOCKET_TIMEOUT = TimeUnit.SECONDS.toMillis(10);
|
||
|
|
||
|
private final Context context;
|
||
|
|
||
|
public RestStrategy(@NonNull Context context) {
|
||
|
this.context = context;
|
||
|
}
|
||
|
|
||
|
@WorkerThread
|
||
|
@Override
|
||
|
public boolean run() {
|
||
|
long startTime = System.currentTimeMillis();
|
||
|
|
||
|
try (IncomingMessageProcessor.Processor processor = ApplicationDependencies.getIncomingMessageProcessor().acquire()) {
|
||
|
SignalServiceMessageReceiver receiver = ApplicationDependencies.getSignalServiceMessageReceiver();
|
||
|
receiver.setSoTimeoutMillis(SOCKET_TIMEOUT);
|
||
|
|
||
|
receiver.retrieveMessages(envelope -> {
|
||
|
Log.i(TAG, "Retrieved an envelope." + timeSuffix(startTime));
|
||
|
processor.processEnvelope(envelope);
|
||
|
Log.i(TAG, "Successfully processed an envelope." + timeSuffix(startTime));
|
||
|
});
|
||
|
|
||
|
return true;
|
||
|
} catch (IOException e) {
|
||
|
Log.w(TAG, "Failed to retrieve messages.", e);
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static String timeSuffix(long startTime) {
|
||
|
return " (" + (System.currentTimeMillis() - startTime) + " ms elapsed)";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public @NonNull String toString() {
|
||
|
return RestStrategy.class.getSimpleName();
|
||
|
}
|
||
|
}
|