OSDN Git Service

Use thread safe set for RemoteConnection.mListeners
authorSailesh Nepal <sail@google.com>
Sat, 9 Aug 2014 23:36:35 +0000 (16:36 -0700)
committerSailesh Nepal <sail@google.com>
Sat, 9 Aug 2014 23:36:35 +0000 (16:36 -0700)
Switch from HashSet to set backed by a ConcurrentHashMap to prevent
ConcurrentModificationExceptions.

Bug: 16901565
Change-Id: I7666ef61e94994963b2c2634a9a250365e753888

telecomm/java/android/telecomm/RemoteConnection.java

index 197e480..a8636d4 100644 (file)
@@ -28,6 +28,7 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * RemoteConnection object used by RemoteConnectionService.
@@ -179,7 +180,8 @@ public final class RemoteConnection {
 
     private IConnectionService mConnectionService;
     private final String mConnectionId;
-    private final Set<Listener> mListeners = new HashSet<>();
+    private final Set<Listener> mListeners = Collections.newSetFromMap(
+            new ConcurrentHashMap<Listener, Boolean>(2));
     private final Set<RemoteConnection> mConferenceableConnections = new HashSet<>();
 
     private int mState = Connection.State.NEW;