- try (DBusConnection conn = DBusConnection.getConnection(busType)) {
- List<Thread> receiveThreads = new ArrayList<>();
- for (Manager m : managers) {
- String objectPath = DbusConfig.getObjectPath(m.getUsername());
- Thread thread = run(conn, objectPath, m, ignoreAttachments, inJson);
- receiveThreads.add(thread);
+ try (var conn = DBusConnection.getConnection(busType)) {
+ final var signalControl = new DbusSignalControlImpl(c, m -> {
+ try {
+ final var objectPath = DbusConfig.getObjectPath(m.getUsername());
+ return run(conn, objectPath, m, ignoreAttachments);
+ } catch (DBusException e) {
+ logger.error("Failed to export object", e);
+ return null;
+ }
+ }, DbusConfig.getObjectPath());
+ conn.exportObject(signalControl);
+
+ for (var m : managers) {
+ signalControl.addManager(m);