Skip to content

Commit 55adf5e

Browse files
committed
Synchronized listeners + added debug message is no listeners are registered
1 parent 651d6d7 commit 55adf5e

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

core/src/main/java/xyz/gianlu/librespot/connectstate/DeviceStateHandler.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public final class DeviceStateHandler implements DealerClient.MessageListener, D
4040

4141
private final Session session;
4242
private final Connect.DeviceInfo.Builder deviceInfo;
43-
private final List<Listener> listeners = new ArrayList<>();
43+
private final List<Listener> listeners = Collections.synchronizedList(new ArrayList<>());
4444
private final Connect.PutStateRequest.Builder putState;
4545
private volatile String connectionId = null;
4646

@@ -79,15 +79,11 @@ private static Connect.DeviceInfo.Builder initializeDeviceInfo(@NotNull Session
7979
}
8080

8181
public void addListener(@NotNull Listener listener) {
82-
synchronized (listeners) {
83-
listeners.add(listener);
84-
}
82+
listeners.add(listener);
8583
}
8684

8785
public void removeListener(@NotNull Listener listener) {
88-
synchronized (listeners) {
89-
listeners.remove(listener);
90-
}
86+
listeners.remove(listener);
9187
}
9288

9389
private void notifyReady() {
@@ -96,6 +92,11 @@ private void notifyReady() {
9692
}
9793

9894
private void notifyCommand(@NotNull Endpoint endpoint, @NotNull CommandBody data) {
95+
if (listeners.isEmpty()) {
96+
LOGGER.warn(String.format("Cannot dispatch command because there are no listeners. {command: %s}", endpoint));
97+
return;
98+
}
99+
99100
for (Listener listener : new ArrayList<>(listeners)) {
100101
try {
101102
listener.command(endpoint, data);

0 commit comments

Comments
 (0)