Skip to content

Commit

Permalink
Move back to async message processing.
Browse files Browse the repository at this point in the history
  • Loading branch information
greyson-signal committed Feb 26, 2021
1 parent 32d0522 commit ce9d44d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
Expand Up @@ -116,20 +116,17 @@ public void onRun() throws 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()) {
DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope);

if (result.getContent() != null) {
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());
if (result.getContent() != null) {
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());

for (Job job: jobs) {
ApplicationDependencies.getJobManager().add(job);
}
Expand Down
Expand Up @@ -25,12 +25,12 @@
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil.DecryptionResult;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.SetUtil;
import org.thoughtcrime.securesms.util.Stopwatch;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
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.SignalServiceGroupContext;

Expand Down Expand Up @@ -100,6 +100,20 @@ private Processor(@NonNull Context context) {
}

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() + ".");

Stopwatch stopwatch = new Stopwatch("message");
Expand All @@ -122,6 +136,7 @@ private Processor(@NonNull Context context) {
Log.i(TAG, "Acquired lock while processing message " + envelope.getTimestamp() + ".");

DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope);
Log.d(TAG, "Decryption finished for " + envelope.getTimestamp());
stopwatch.split("decrypt");

for (Job job : result.getJobs()) {
Expand Down

0 comments on commit ce9d44d

Please sign in to comment.