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);
}
@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);
import java.io.IOException;
import java.util.List;
-import java.util.concurrent.TimeUnit;
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);
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.TimeUnit;
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);
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);
}
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();
}