]> nmode's Git Repositories - signal-cli/commitdiff
Split receiveMessages method
authorAsamK <asamk@gmx.de>
Thu, 21 Oct 2021 19:19:14 +0000 (21:19 +0200)
committerAsamK <asamk@gmx.de>
Thu, 21 Oct 2021 19:19:14 +0000 (21:19 +0200)
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
src/main/java/org/asamk/signal/commands/DaemonCommand.java
src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java
src/main/java/org/asamk/signal/commands/ReceiveCommand.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java

index f70c4e29d33766a405d15fd79e2de413f10359a1..ac0cc02fc03aa98017798236ef3cabbfbf06bcfe 100644 (file)
@@ -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);
 
index bec7f52143cf7c902ef2545545f18ca47567c1f3..0421a4010634e931821defe3e6852cead0e51230 100644 (file)
@@ -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);
index 9997f56a9e059325658e3b4d5ab81196224bc73f..9627d9fb7ebb9d79a7191e4b0213f464ec1b377a 100644 (file)
@@ -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);
index 349bd0c415771b93b6ef8cc5cffcc2fba1e781fc..2a95a8803319e9d0db2aa7269e6d015f71d945fa 100644 (file)
@@ -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);
index b4797be3528611ef7a5248a404b2f27dc2e80c63..e72d809027b9075ef678ac0cd756d34434ebfc69 100644 (file)
@@ -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);
         }
index 93d368881a68465c0fef0f5abac2612623135ff2..31e29ac931faa7ac97b1da59c2a61b1471ca8325 100644 (file)
@@ -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();
     }