IrcDotNet.IrcClient.ProcessMessageKick C# (CSharp) Method

ProcessMessageKick() private method

private ProcessMessageKick ( IrcMessage message ) : void
message IrcMessage
return void
        protected internal void ProcessMessageKick(IrcMessage message)
        {
            Debug.Assert(message.Parameters[0] != null);
            var channels = GetChannelsFromList(message.Parameters[0]);
            Debug.Assert(message.Parameters[1] != null);
            var users = GetUsersFromList(message.Parameters[1]).ToArray();
            var comment = message.Parameters[2];

            // Handle kick command for each user given in message.
            foreach (var channelUser in channels.Zip(users,
                (channel, user) => channel.GetChannelUser(user)))
            {
                if (channelUser.User == localUser)
                {
                    // Local user was kicked from channel.
                    var channel = channelUser.Channel;
                    lock (((ICollection) Channels).SyncRoot)
                        this.channels.Remove(channel);

                    channelUser.Channel.HandleUserKicked(channelUser, comment);
                    localUser.HandleLeftChannel(channel);

                    // Local user has left channel. Do not process kicks of remote users.
                    break;
                }
                // Remote user was kicked from channel.
                channelUser.Channel.HandleUserKicked(channelUser, comment);
            }
        }
IrcClient