X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/175057e781623d5e61128ccbb13f2eb47ae8bf94..HEAD:/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..37da35e1 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; @@ -27,7 +30,7 @@ import java.util.Optional; public class ReceiveCommand implements LocalCommand, JsonRpcSingleCommand { - private final static Logger logger = LoggerFactory.getLogger(ReceiveCommand.class); + private static final Logger logger = LoggerFactory.getLogger(ReceiveCommand.class); @Override public String getName() { @@ -63,8 +66,11 @@ 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); } } @@ -89,7 +100,9 @@ public class ReceiveCommand implements LocalCommand, JsonRpcSingleCommand