]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Update hypfvieh dbus-java 4.0 beta which uses native java unix sockets
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index cc346f7af7ff7ab4b8fd434dfb7c1297b0c0eeb4..b61ca1358f93de03ada08e9b2d54fa6982c49a8e 100644 (file)
@@ -68,6 +68,7 @@ public class DbusManagerImpl implements Manager {
 
     private final Set<ReceiveMessageHandler> weakHandlers = new HashSet<>();
     private final Set<ReceiveMessageHandler> messageHandlers = new HashSet<>();
+    private final List<Runnable> closedListeners = new ArrayList<>();
     private DBusSigHandler<Signal.MessageReceivedV2> dbusMsgHandler;
     private DBusSigHandler<Signal.ReceiptReceivedV2> dbusRcptHandler;
     private DBusSigHandler<Signal.SyncMessageReceivedV2> dbusSyncHandler;
@@ -583,6 +584,13 @@ public class DbusManagerImpl implements Manager {
         throw new UnsupportedOperationException();
     }
 
+    @Override
+    public void addClosedListener(final Runnable listener) {
+        synchronized (closedListeners) {
+            closedListeners.add(listener);
+        }
+    }
+
     @Override
     public void close() throws IOException {
         synchronized (this) {
@@ -595,6 +603,10 @@ public class DbusManagerImpl implements Manager {
             weakHandlers.clear();
             messageHandlers.clear();
         }
+        synchronized (closedListeners) {
+            closedListeners.forEach(Runnable::run);
+            closedListeners.clear();
+        }
     }
 
     private SendMessageResults handleMessage(