From: AsamK Date: Thu, 21 Oct 2021 19:19:14 +0000 (+0200) Subject: Split receiveMessages method X-Git-Tag: v0.9.2~6 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/5c389c875d91bacba127d0e9cbdc1746b022e5aa?hp=430c155f7ee0a13b63cd37856e94853eb218f876 Split receiveMessages method --- diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index f70c4e29..ac0cc02f 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -193,9 +193,15 @@ public interface Manager extends Closeable { void requestAllSyncData() throws IOException; - void receiveMessages( - long timeout, TimeUnit unit, boolean returnOnTimeout, ReceiveMessageHandler handler - ) throws IOException; + /** + * Receive new messages from server, returns if no new message arrive in a timespan of timeout. + */ + void receiveMessages(long timeout, TimeUnit unit, ReceiveMessageHandler handler) throws IOException; + + /** + * Receive new messages from server, returns only if the thread is interrupted. + */ + void receiveMessages(ReceiveMessageHandler handler) throws IOException; void setIgnoreAttachments(boolean ignoreAttachments); diff --git a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java index bec7f521..0421a401 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java @@ -873,7 +873,16 @@ public class ManagerImpl implements Manager { } @Override - public void receiveMessages( + public void receiveMessages(long timeout, TimeUnit unit, ReceiveMessageHandler handler) throws IOException { + receiveMessages(timeout, unit, true, handler); + } + + @Override + public void receiveMessages(ReceiveMessageHandler handler) throws IOException { + receiveMessages(1L, TimeUnit.HOURS, false, handler); + } + + private void receiveMessages( long timeout, TimeUnit unit, boolean returnOnTimeout, ReceiveMessageHandler handler ) throws IOException { retryFailedReceivedMessages(handler); diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 9997f56a..9627d9fb 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -23,7 +23,6 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.List; -import java.util.concurrent.TimeUnit; public class DaemonCommand implements MultiLocalCommand { @@ -135,7 +134,7 @@ public class DaemonCommand implements MultiLocalCommand { final var receiveMessageHandler = outputWriter instanceof JsonWriter ? new JsonDbusReceiveMessageHandler(m, (JsonWriter) outputWriter, conn, objectPath) : new DbusReceiveMessageHandler(m, (PlainTextWriter) outputWriter, conn, objectPath); - m.receiveMessages(1, TimeUnit.HOURS, false, receiveMessageHandler); + m.receiveMessages(receiveMessageHandler); break; } catch (IOException e) { logger.warn("Receiving messages failed, retrying", e); diff --git a/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java b/src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java index 349bd0c4..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 { @@ -173,7 +172,7 @@ public class JsonRpcDispatcherCommand implements LocalCommand { while (!Thread.interrupted()) { try { final var receiveMessageHandler = new JsonReceiveMessageHandler(m, jsonWriter); - m.receiveMessages(1, TimeUnit.HOURS, false, receiveMessageHandler); + m.receiveMessages(receiveMessageHandler); break; } catch (IOException e) { logger.warn("Receiving messages failed, retrying", e); diff --git a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java index b4797be3..e72d8090 100644 --- a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java +++ b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java @@ -142,17 +142,16 @@ public class ReceiveCommand implements ExtendedDbusCommand, LocalCommand { final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { double timeout = ns.getDouble("timeout"); - var returnOnTimeout = true; - if (timeout < 0) { - returnOnTimeout = false; - timeout = 3600; - } boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments")); m.setIgnoreAttachments(ignoreAttachments); try { final var handler = outputWriter instanceof JsonWriter ? new JsonReceiveMessageHandler(m, (JsonWriter) outputWriter) : new ReceiveMessageHandler(m, (PlainTextWriter) outputWriter); - m.receiveMessages((long) (timeout * 1000), TimeUnit.MILLISECONDS, returnOnTimeout, handler); + if (timeout < 0) { + m.receiveMessages(handler); + } else { + m.receiveMessages((long) (timeout * 1000), TimeUnit.MILLISECONDS, handler); + } } catch (IOException e) { throw new IOErrorException("Error while receiving messages: " + e.getMessage(), e); } diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index 93d36888..31e29ac9 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -423,9 +423,14 @@ public class DbusManagerImpl implements Manager { signal.sendSyncRequest(); } + @Override + public void receiveMessages(final ReceiveMessageHandler handler) throws IOException { + throw new UnsupportedOperationException(); + } + @Override public void receiveMessages( - final long timeout, final TimeUnit unit, final boolean returnOnTimeout, final ReceiveMessageHandler handler + final long timeout, final TimeUnit unit, final ReceiveMessageHandler handler ) throws IOException { throw new UnsupportedOperationException(); }