From: AsamK Date: Mon, 28 Nov 2016 11:38:43 +0000 (+0100) Subject: Allow millisecond timeouts X-Git-Tag: v0.5.2~4 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/c5cf78a50ad213fb21728f4d648de51dfac7f07e Allow millisecond timeouts --- diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index b2550fe7..d67bfca0 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -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"); diff --git a/src/main/java/org/asamk/signal/Manager.java b/src/main/java/org/asamk/signal/Manager.java index d06a07c0..6598bfde 100644 --- a/src/main/java/org/asamk/signal/Manager.java +++ b/src/main/java/org/asamk/signal/Manager.java @@ -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