final String userAgent
) {
this.managers.addAll(managers);
+ managers.forEach(m -> m.addClosedListener(() -> this.removeManager(m)));
this.dataPath = dataPath;
this.serviceEnvironment = serviceEnvironment;
this.userAgent = userAgent;
return;
}
managers.add(m);
+ m.addClosedListener(() -> this.removeManager(m));
}
synchronized (onManagerAddedHandlers) {
for (final var handler : onManagerAddedHandlers) {
}
}
+ void removeManager(final Manager m) {
+ synchronized (managers) {
+ if (!managers.remove(m)) {
+ return;
+ }
+ }
+ synchronized (onManagerRemovedHandlers) {
+ for (final var handler : onManagerRemovedHandlers) {
+ handler.accept(m);
+ }
+ }
+ }
+
@Override
public void addOnManagerRemovedHandler(final Consumer<Manager> handler) {
synchronized (onManagerRemovedHandlers) {