X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/6dd1a216062baa6503d158dcaac5ee1a2cd1b43e..5c389c875d91bacba127d0e9cbdc1746b022e5aa:/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java diff --git a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java index 16d0cf71..2a95a880 100644 --- a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java +++ b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java @@ -33,7 +33,6 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import java.util.Map; -import java.util.concurrent.TimeUnit; public class JsonRpcDispatcherCommand implements LocalCommand { @@ -65,7 +64,8 @@ public class JsonRpcDispatcherCommand implements LocalCommand { public void handleCommand( final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { - final boolean ignoreAttachments = ns.getBoolean("ignore-attachments"); + final boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); + m.setIgnoreAttachments(ignoreAttachments); final var objectMapper = Util.createJsonObjectMapper(); final var jsonRpcSender = new JsonRpcSender((JsonWriter) outputWriter); @@ -73,7 +73,17 @@ public class JsonRpcDispatcherCommand implements LocalCommand { final var receiveThread = receiveMessages(s -> jsonRpcSender.sendRequest(JsonRpcRequest.forNotification( "receive", objectMapper.valueToTree(s), - null)), m, ignoreAttachments); + null)), m); + + // Maybe this should be handled inside the Manager + while (!m.hasCaughtUpWithOldMessages()) { + try { + synchronized (m) { + m.wait(); + } + } catch (InterruptedException ignored) { + } + } final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); @@ -157,14 +167,12 @@ public class JsonRpcDispatcherCommand implements LocalCommand { command.handleCommand(requestParams, m, outputWriter); } - private Thread receiveMessages( - JsonWriter jsonWriter, Manager m, boolean ignoreAttachments - ) { + private Thread receiveMessages(JsonWriter jsonWriter, Manager m) { final var thread = new Thread(() -> { while (!Thread.interrupted()) { try { final var receiveMessageHandler = new JsonReceiveMessageHandler(m, jsonWriter); - m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, receiveMessageHandler); + m.receiveMessages(receiveMessageHandler); break; } catch (IOException e) { logger.warn("Receiving messages failed, retrying", e);