11package com .pusher .client .channel .impl ;
22
3- import java .util .HashMap ;
43import java .util .Map ;
4+ import java .util .concurrent .ConcurrentHashMap ;
55
66import com .google .gson .Gson ;
77import com .pusher .client .AuthorizationFailureException ;
2020public class ChannelManager implements ConnectionEventListener {
2121
2222 private static final Gson GSON = new Gson ();
23- private final Map <String , InternalChannel > channelNameToChannelMap = new HashMap <String , InternalChannel >();
23+ private final Map <String , InternalChannel > channelNameToChannelMap = new ConcurrentHashMap <String , InternalChannel >();
24+
2425 private final Factory factory ;
2526 private InternalConnection connection ;
2627
@@ -70,8 +71,7 @@ public void setConnection(final InternalConnection connection) {
7071 connection .bind (ConnectionState .CONNECTED , this );
7172 }
7273
73- public void subscribeTo (final InternalChannel channel , final ChannelEventListener listener ,
74- final String ... eventNames ) {
74+ public void subscribeTo (final InternalChannel channel , final ChannelEventListener listener , final String ... eventNames ) {
7575
7676 validateArgumentsAndBindEvents (channel , listener , eventNames );
7777 channelNameToChannelMap .put (channel .getName (), channel );
@@ -88,7 +88,6 @@ public void unsubscribeFrom(final String channelName) {
8888 if (channel == null ) {
8989 return ;
9090 }
91-
9291 if (connection .getState () == ConnectionState .CONNECTED ) {
9392 sendUnsubscribeMessage (channel );
9493 }
@@ -116,8 +115,7 @@ public void onMessage(final String event, final String wholeMessage) {
116115 public void onConnectionStateChange (final ConnectionStateChange change ) {
117116
118117 if (change .getCurrentState () == ConnectionState .CONNECTED ) {
119-
120- for (final InternalChannel channel : channelNameToChannelMap .values ()) {
118+ for (final InternalChannel channel : channelNameToChannelMap .values ()){
121119 sendOrQueueSubscribeMessage (channel );
122120 }
123121 }
@@ -181,8 +179,7 @@ public void run() {
181179 }
182180 }
183181
184- private void validateArgumentsAndBindEvents (final InternalChannel channel , final ChannelEventListener listener ,
185- final String ... eventNames ) {
182+ private void validateArgumentsAndBindEvents (final InternalChannel channel , final ChannelEventListener listener , final String ... eventNames ) {
186183
187184 if (channel == null ) {
188185 throw new IllegalArgumentException ("Cannot subscribe to a null channel" );
0 commit comments