public IChannelInfo channelData(
     String channelName, String userName, InetSocketAddress userAddress) {
   // System.out.println("channelName channel:"+channelName+" user:"******"
   // addr:"+userAddress);
   ChannelInfo channel = channelsCache.get(channelName);
   if (channel == null) {
     synchronized (channels) {
       channel = channels.get(channelName);
       if (channel == null) {
         channel = new ChannelInfo(channelName);
         channels.put(channelName, channel);
         updateChannelsCache();
         ServerLogger.getInstance().channelCreated(channelName);
       }
     }
   }
   boolean updated = channel.userData(userName, userAddress);
   if (updated) {
     ServerLogger.getInstance().channelJoined(channelName, userName, userAddress);
   }
   return channel;
 }