+
+ private Thread run(
+ DBusConnection conn, String objectPath, Manager m, boolean ignoreAttachments
+ ) throws DBusException {
+ conn.exportObject(objectPath, new DbusSignalImpl(m));
+
+ final var thread = new Thread(() -> {
+ while (true) {
+ try {
+ 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, ignoreAttachments, receiveMessageHandler);
+ } catch (IOException e) {
+ logger.warn("Receiving messages failed, retrying", e);
+ }
+ }
+ });
+
+ logger.info("Exported dbus object: " + objectPath);
+
+ thread.start();
+
+ return thread;
+ }