public void ChannelState(MumbleSharp.Packets.ChannelState channelState)
        {
            var channel = _channels.AddOrUpdate(channelState.ChannelId, i => new Channel(channelState.ChannelId, channelState.Name, channelState.Parent) { Temporary = channelState.Temporary },
                (i, c) =>
                {
                    c.Name = channelState.Name;
                    return c;
                }
            );

            if (channel.Id == 0)
                RootChannel = channel;
        }
 public void ServerConfig(MumbleSharp.Packets.ServerConfig serverConfig)
 {
 }
 public void Ping(MumbleSharp.Packets.Ping ping)
 {
 }
 public void PermissionQuery(MumbleSharp.Packets.PermissionQuery permissionQuery)
 {
 }
 public void ContextActionAdd(MumbleSharp.Packets.ContextActionAdd contextActionAdd)
 {
 }
 public void ContextAction(MumbleSharp.Packets.ContextAction contextAction)
 {
 }
 public void CodecVersion(MumbleSharp.Packets.CodecVersion codecVersion)
 {
 }
 public void Version(MumbleSharp.Packets.Version version)
 {
 }
 public void ChannelRemove(MumbleSharp.Packets.ChannelRemove channelRemove)
 {
     Channel c;
     _channels.TryRemove(channelRemove.ChannelId, out c);
 }
        public void UserState(MumbleSharp.Packets.UserState userState)
        {
            if (userState.Session.HasValue)
            {
                User user = _users.AddOrUpdate(userState.Session.Value, i => new User(userState.Session.Value), (i, u) => u);

                if (userState.SelfDeaf.HasValue)
                    user.Deaf = userState.SelfDeaf.Value;
                if (userState.SelfMute.HasValue)
                    user.Muted = userState.SelfMute.Value;
                if (userState.Mute.HasValue)
                    user.Muted = userState.Mute.Value;
                if (userState.Deaf.HasValue)
                    user.Deaf = userState.Deaf.Value;
                if (userState.Suppress.HasValue)
                    user.Muted = userState.Suppress.Value;
                if (userState.Name != null)
                    user.Name = userState.Name;
                if (userState.ChannelId.HasValue)
                    user.Channel = _channels[userState.ChannelId.Value];
            }
        }
 public void UserRemove(MumbleSharp.Packets.UserRemove userRemove)
 {
     User user;
     if (_users.TryRemove(userRemove.Session, out user))
         user.Dispose();
     if (user.Equals(LocalUser))
     {
         //Console.WriteLine(((userRemove.Ban) ? "Banned" : "Kicked") + " from server. Reason: " + userRemove.Reason);
         _connection.Close();
     }
 }
 public void UserList(MumbleSharp.Packets.UserList userList)
 {
 }
        public void TextMessage(MumbleSharp.Packets.TextMessage textMessage)
        {
            User user;
            if (!_users.TryGetValue(textMessage.Actor, out user))   //If we don't know the user for this packet, just ignore it
                return;

            Channel c;
            if (!_channels.TryGetValue(textMessage.ChannelId[0], out c))    //If we don't know the channel for this packet, just ignore it
                return;

            for (int i = 0; i < textMessage.Message.Length; i++)
                Console.WriteLine(user.Name + " (" + c.Name + "): " + textMessage.Message[i]);
        }
        public void ServerSync(MumbleSharp.Packets.ServerSync serverSync)
        {
            if (LocalUser != null)
                throw new InvalidOperationException("Second ServerSync Received");

            LocalUser = _users[serverSync.Session];
        }