kopia lustrzana https://github.com/ryukoposting/Signal-Android
Move back to async message processing.
rodzic
32d052259f
commit
ce9d44d010
|
@ -116,20 +116,17 @@ public final class PushDecryptMessageJob extends BaseJob {
|
||||||
throw new RetryLaterException();
|
throw new RetryLaterException();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Job> jobs = new LinkedList<>();
|
List<Job> jobs = new LinkedList<>();
|
||||||
|
DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope);
|
||||||
|
|
||||||
try (DatabaseSessionLock.Lock unused = DatabaseSessionLock.INSTANCE.acquire()) {
|
if (result.getContent() != null) {
|
||||||
DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope);
|
jobs.add(new PushProcessMessageJob(result.getContent(), smsMessageId, envelope.getTimestamp()));
|
||||||
|
} else if (result.getException() != null && result.getState() != MessageState.NOOP) {
|
||||||
if (result.getContent() != null) {
|
jobs.add(new PushProcessMessageJob(result.getState(), result.getException(), smsMessageId, envelope.getTimestamp()));
|
||||||
jobs.add(new PushProcessMessageJob(result.getContent(), smsMessageId, envelope.getTimestamp()));
|
|
||||||
} else if (result.getException() != null && result.getState() != MessageState.NOOP) {
|
|
||||||
jobs.add(new PushProcessMessageJob(result.getState(), result.getException(), smsMessageId, envelope.getTimestamp()));
|
|
||||||
}
|
|
||||||
|
|
||||||
jobs.addAll(result.getJobs());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jobs.addAll(result.getJobs());
|
||||||
|
|
||||||
for (Job job: jobs) {
|
for (Job job: jobs) {
|
||||||
ApplicationDependencies.getJobManager().add(job);
|
ApplicationDependencies.getJobManager().add(job);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,12 +25,12 @@ import org.thoughtcrime.securesms.jobs.PushProcessMessageJob;
|
||||||
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil.DecryptionResult;
|
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil.DecryptionResult;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||||
|
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||||
import org.thoughtcrime.securesms.util.GroupUtil;
|
import org.thoughtcrime.securesms.util.GroupUtil;
|
||||||
import org.thoughtcrime.securesms.util.SetUtil;
|
import org.thoughtcrime.securesms.util.SetUtil;
|
||||||
import org.thoughtcrime.securesms.util.Stopwatch;
|
import org.thoughtcrime.securesms.util.Stopwatch;
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||||
import org.whispersystems.signalservice.api.SignalSessionLock;
|
import org.whispersystems.signalservice.api.SignalSessionLock;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
|
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
|
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceGroupContext;
|
import org.whispersystems.signalservice.api.messages.SignalServiceGroupContext;
|
||||||
|
|
||||||
|
@ -100,6 +100,20 @@ public class IncomingMessageProcessor {
|
||||||
}
|
}
|
||||||
|
|
||||||
private @Nullable String processMessage(@NonNull SignalServiceEnvelope envelope) {
|
private @Nullable String processMessage(@NonNull SignalServiceEnvelope envelope) {
|
||||||
|
if (FeatureFlags.internalUser()) {
|
||||||
|
return processMessageInline(envelope);
|
||||||
|
} else {
|
||||||
|
return processMessageDeferred(envelope);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private @Nullable String processMessageDeferred(@NonNull SignalServiceEnvelope envelope) {
|
||||||
|
Job job = new PushDecryptMessageJob(context, envelope);
|
||||||
|
jobManager.add(job);
|
||||||
|
return job.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
private @Nullable String processMessageInline(@NonNull SignalServiceEnvelope envelope) {
|
||||||
Log.i(TAG, "Received message " + envelope.getTimestamp() + ".");
|
Log.i(TAG, "Received message " + envelope.getTimestamp() + ".");
|
||||||
|
|
||||||
Stopwatch stopwatch = new Stopwatch("message");
|
Stopwatch stopwatch = new Stopwatch("message");
|
||||||
|
@ -122,6 +136,7 @@ public class IncomingMessageProcessor {
|
||||||
Log.i(TAG, "Acquired lock while processing message " + envelope.getTimestamp() + ".");
|
Log.i(TAG, "Acquired lock while processing message " + envelope.getTimestamp() + ".");
|
||||||
|
|
||||||
DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope);
|
DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope);
|
||||||
|
Log.d(TAG, "Decryption finished for " + envelope.getTimestamp());
|
||||||
stopwatch.split("decrypt");
|
stopwatch.split("decrypt");
|
||||||
|
|
||||||
for (Job job : result.getJobs()) {
|
for (Job job : result.getJobs()) {
|
||||||
|
|
Ładowanie…
Reference in New Issue