- boolean ignoreAttachments = ns.getBoolean("ignore_attachments");
- try {
- m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, ns.getBoolean("json") ? new JsonDbusReceiveMessageHandler(m, conn, SIGNAL_OBJECTPATH) : new DbusReceiveMessageHandler(m, conn, SIGNAL_OBJECTPATH));
- return 0;
- } catch (IOException e) {
- System.err.println("Error while receiving messages: " + e.getMessage());
- return 3;
- } catch (AssertionError e) {
- handleAssertionError(e);
- return 1;
+ } catch (DBusException | IOException e) {
+ logger.error("Dbus command failed", e);
+ throw new UnexpectedErrorException("Dbus command failed");
+ }
+ }
+
+ @Override
+ public void handleCommand(final Namespace ns, final List<Manager> managers) throws CommandException {
+ var inJson = ns.get("output") == OutputType.JSON;
+
+ boolean ignoreAttachments = ns.getBoolean("ignore-attachments");
+
+ DBusConnection.DBusBusType busType;
+ if (ns.getBoolean("system")) {
+ busType = DBusConnection.DBusBusType.SYSTEM;
+ } else {
+ busType = DBusConnection.DBusBusType.SESSION;
+ }
+
+ try (var conn = DBusConnection.getConnection(busType)) {
+ var receiveThreads = new ArrayList<Thread>();
+ for (var m : managers) {
+ var objectPath = DbusConfig.getObjectPath(m.getUsername());
+ var thread = run(conn, objectPath, m, ignoreAttachments, inJson);
+ receiveThreads.add(thread);