X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/175057e781623d5e61128ccbb13f2eb47ae8bf94..b20978e08e0210d179ec14e4ceeb8f01dad27642:/src/main/java/org/asamk/signal/commands/ReceiveCommand.java diff --git a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java index 79d0ee1d..4a6f746a 100644 --- a/src/main/java/org/asamk/signal/commands/ReceiveCommand.java +++ b/src/main/java/org/asamk/signal/commands/ReceiveCommand.java @@ -8,10 +8,13 @@ import net.sourceforge.argparse4j.inf.Subparser; import org.asamk.signal.OutputType; import org.asamk.signal.ReceiveMessageHandler; +import org.asamk.signal.Shutdown; import org.asamk.signal.commands.exceptions.CommandException; import org.asamk.signal.commands.exceptions.IOErrorException; +import org.asamk.signal.commands.exceptions.UserErrorException; import org.asamk.signal.json.JsonReceiveMessageHandler; import org.asamk.signal.manager.Manager; +import org.asamk.signal.manager.api.AlreadyReceivingException; import org.asamk.signal.manager.api.ReceiveConfig; import org.asamk.signal.output.JsonWriter; import org.asamk.signal.output.OutputWriter; @@ -65,6 +68,7 @@ public class ReceiveCommand implements LocalCommand, JsonRpcSingleCommand new JsonReceiveMessageHandler(m, writer); + case PlainTextWriter writer -> new ReceiveMessageHandler(m, writer); + }; final var duration = timeout < 0 ? null : Duration.ofMillis((long) (timeout * 1000)); final var maxMessages = maxMessagesRaw < 0 ? null : maxMessagesRaw; + Shutdown.registerShutdownListener(m::stopReceiveMessages); m.receiveMessages(Optional.ofNullable(duration), Optional.ofNullable(maxMessages), handler); } catch (IOException e) { throw new IOErrorException("Error while receiving messages: " + e.getMessage(), e); + } catch (AlreadyReceivingException e) { + throw new UserErrorException("Receive command cannot be used if messages are already being received.", e); } } @@ -103,8 +112,10 @@ public class ReceiveCommand implements LocalCommand, JsonRpcSingleCommand