GameMachine.Core.Messenger.processChannels C# (CSharp) Method

processChannels() private method

private processChannels ( io.gamemachine.messages.ChatChannels chatChannels ) : void
chatChannels io.gamemachine.messages.ChatChannels
return void
        private void processChannels(ChatChannels chatChannels)
        {
            List<string> channels = new List<string> ();
            foreach (ChatChannel chatChannel in chatChannels.chatChannel) {
                channels.Add (chatChannel.name);
                subscribers [chatChannel.name] = chatChannel.subscribers.subscriberId;
            }

            foreach (string name in channels.Except(channelSubscriptions)) {
                channelSubscriptions.Add (name);
                if (name.StartsWith ("priv_")) {
                    privateChannelSubscriptions.Add (name);
                }

                if (channelJoined != null) {
                    channelJoined (name);
                }
            }

            List<string> channelsToRemove = channelSubscriptions.Except (channels).ToList ();
            foreach (string name in channelsToRemove) {
                channelSubscriptions.Remove (name);
                if (name.StartsWith ("priv_")) {
                    privateChannelSubscriptions.Remove (name);
                }

                if (channelLeft != null) {
                    channelLeft (name);
                }
            }
        }