]> nmode's Git Repositories - signal-cli/commitdiff
Allow millisecond timeouts
authorAsamK <asamk@gmx.de>
Mon, 28 Nov 2016 11:38:43 +0000 (12:38 +0100)
committerAsamK <asamk@gmx.de>
Mon, 28 Nov 2016 11:38:43 +0000 (12:38 +0100)
src/main/java/org/asamk/signal/Main.java
src/main/java/org/asamk/signal/Manager.java

index b2550fe75544771269c85e7301129b5c8ba8bc78..d67bfca00779cab2f50b55dd9dadd351d54977d6 100644 (file)
@@ -46,6 +46,7 @@ import java.security.Security;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
 public class Main {
@@ -365,9 +366,9 @@ public class Main {
                         System.err.println("User is not registered.");
                         return 1;
                     }
-                    int timeout = 5;
-                    if (ns.getInt("timeout") != null) {
-                        timeout = ns.getInt("timeout");
+                    double timeout = 5;
+                    if (ns.getDouble("timeout") != null) {
+                        timeout = ns.getDouble("timeout");
                     }
                     boolean returnOnTimeout = true;
                     if (timeout < 0) {
@@ -375,7 +376,7 @@ public class Main {
                         timeout = 3600;
                     }
                     try {
-                        m.receiveMessages(timeout, returnOnTimeout, new ReceiveMessageHandler(m));
+                        m.receiveMessages((long) (timeout * 1000), TimeUnit.MILLISECONDS, returnOnTimeout, new ReceiveMessageHandler(m));
                     } catch (IOException e) {
                         System.err.println("Error while receiving messages: " + e.getMessage());
                         return 3;
@@ -549,7 +550,7 @@ public class Main {
                             return 2;
                         }
                         try {
-                            m.receiveMessages(3600, false, new DbusReceiveMessageHandler(m, conn));
+                            m.receiveMessages(1, TimeUnit.HOURS, false, new DbusReceiveMessageHandler(m, conn));
                         } catch (IOException e) {
                             System.err.println("Error while receiving messages: " + e.getMessage());
                             return 3;
@@ -719,7 +720,7 @@ public class Main {
 
         Subparser parserReceive = subparsers.addParser("receive");
         parserReceive.addArgument("-t", "--timeout")
-                .type(int.class)
+                .type(double.class)
                 .help("Number of seconds to wait for new messages (negative values disable timeout)");
 
         Subparser parserDaemon = subparsers.addParser("daemon");
index d06a07c07efc017f0f2372b6671cf6e5ad25dd7e..6598bfde2c47aefcd3485605b178242ed8c4dfce 100644 (file)
@@ -1027,7 +1027,7 @@ class Manager implements Signal {
         }
     }
 
-    public void receiveMessages(int timeoutSeconds, boolean returnOnTimeout, ReceiveMessageHandler handler) throws IOException {
+    public void receiveMessages(long timeout, TimeUnit unit, boolean returnOnTimeout, ReceiveMessageHandler handler) throws IOException {
         retryFailedReceivedMessages(handler);
         final SignalServiceMessageReceiver messageReceiver = new SignalServiceMessageReceiver(URL, TRUST_STORE, username, password, deviceId, signalingKey, USER_AGENT);
         SignalServiceMessagePipe messagePipe = null;
@@ -1041,7 +1041,7 @@ class Manager implements Signal {
                 Exception exception = null;
                 final long now = new Date().getTime();
                 try {
-                    envelope = messagePipe.read(timeoutSeconds, TimeUnit.SECONDS, new SignalServiceMessagePipe.MessagePipeCallback() {
+                    envelope = messagePipe.read(timeout, unit, new SignalServiceMessagePipe.MessagePipeCallback() {
                         @Override
                         public void onMessage(SignalServiceEnvelope envelope) {
                             // store message on disk, before acknowledging receipt to the server