From ef32e4b66b769d0541e1fbf7b173e40f7681781f Mon Sep 17 00:00:00 2001 From: Jim Radford Date: Tue, 14 Apr 2009 06:11:21 +0000 Subject: [PATCH] LIBOMV-477 Add additional information in case exception is thrown during decoding of a Message. Fixed some issues in AgentManager related to group chat sessions caused by new Message system. And a couple more changes ChatterBoxSessionAgentListUpdatesMessage to better handle the LL generated OSD git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2603 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/AgentManager.cs | 34 +++++++++---------- OpenMetaverse/Messages/LindenMessages.cs | 17 +++++----- OpenMetaverse/Messages/MessageEventDecoder.cs | 2 +- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/OpenMetaverse/AgentManager.cs b/OpenMetaverse/AgentManager.cs index 3597e8ff..6685b642 100644 --- a/OpenMetaverse/AgentManager.cs +++ b/OpenMetaverse/AgentManager.cs @@ -3169,7 +3169,7 @@ namespace OpenMetaverse ChatSessionMember fndMbr; lock (GroupChatSessions.Dictionary) { - fndMbr = GroupChatSessions[sessionID].Find(delegate(ChatSessionMember member) + fndMbr = GroupChatSessions[msg.SessionID].Find(delegate(ChatSessionMember member) { return member.AvatarKey == msg.Updates[i].AgentID; }); @@ -3215,31 +3215,29 @@ namespace OpenMetaverse } // handle updates - ChatSessionMember update_member = GroupChatSessions.Dictionary[sessionID].Find(delegate(ChatSessionMember m) + ChatSessionMember update_member = GroupChatSessions.Dictionary[msg.SessionID].Find(delegate(ChatSessionMember m) { return m.AvatarKey == msg.Updates[i].AgentID; }); - update_member.MuteText = msg.Updates[i].MuteText; - update_member.MuteVoice = msg.Updates[i].MuteVoice; + + update_member.MuteText = msg.Updates[i].MuteText; + update_member.MuteVoice = msg.Updates[i].MuteVoice; - update_member.CanVoiceChat = msg.Updates[i].CanVoiceChat; - update_member.IsModerator = msg.Updates[i].IsModerator; + update_member.CanVoiceChat = msg.Updates[i].CanVoiceChat; + update_member.IsModerator = msg.Updates[i].IsModerator; - // replace existing member record - lock (GroupChatSessions.Dictionary) + // replace existing member record + lock (GroupChatSessions.Dictionary) + { + int found = GroupChatSessions.Dictionary[msg.SessionID].FindIndex(delegate(ChatSessionMember m) { - int found = GroupChatSessions.Dictionary[sessionID].FindIndex(delegate(ChatSessionMember m) - { - return m.AvatarKey == msg.Updates[i].AgentID; - }); - - if (found >= 0) - GroupChatSessions.Dictionary[sessionID][found] = update_member; - } - - + return m.AvatarKey == msg.Updates[i].AgentID; + }); + if (found >= 0) + GroupChatSessions.Dictionary[msg.SessionID][found] = update_member; + } } } diff --git a/OpenMetaverse/Messages/LindenMessages.cs b/OpenMetaverse/Messages/LindenMessages.cs index 0c348f5b..53189137 100644 --- a/OpenMetaverse/Messages/LindenMessages.cs +++ b/OpenMetaverse/Messages/LindenMessages.cs @@ -1427,8 +1427,8 @@ namespace OpenMetaverse.Messages.Linden mutesMap["voice"] = OSD.FromBoolean(Updates[i].MuteVoice); OSDMap infoMap = new OSDMap(4); - infoMap["can_voice_chat"] = OSD.FromBoolean(Updates[i].CanVoiceChat); - infoMap["is_moderator"] = OSD.FromBoolean(Updates[i].IsModerator); + infoMap["can_voice_chat"] = OSD.FromBoolean((bool)Updates[i].CanVoiceChat); + infoMap["is_moderator"] = OSD.FromBoolean((bool)Updates[i].IsModerator); infoMap["transition"] = OSD.FromString(Updates[i].Transition); OSDMap imap = new OSDMap(1); @@ -1493,22 +1493,21 @@ namespace OpenMetaverse.Messages.Linden */ AgentUpdatesBlock block = new AgentUpdatesBlock(); block.AgentID = UUID.Parse(kvp.Key); - //Console.WriteLine("AgentID: {0}", kvp.Key); OSDMap infoMap = (OSDMap)agent_updates[kvp.Key]; - //Console.WriteLine("InfoMap: {0}", infoMap.ToString()); OSDMap agentPermsMap = (OSDMap)infoMap["info"]; block.CanVoiceChat = agentPermsMap["can_voice_chat"].AsBoolean(); block.IsModerator = agentPermsMap["is_moderator"].AsBoolean(); block.Transition = agentPermsMap["transition"].AsString(); - //Console.WriteLine("type: {0}", infoMap["mutes"].Type); - OSDMap mutesMap = (OSDMap)infoMap["mutes"]; - //Console.WriteLine("\tmutesMap: {0}", mutesMap.ToString()); - block.MuteText = mutesMap["text"].AsBoolean(); - block.MuteVoice = mutesMap["voice"].AsBoolean(); + if (infoMap.ContainsKey("mutes")) + { + OSDMap mutesMap = (OSDMap)infoMap["mutes"]; + block.MuteText = mutesMap["text"].AsBoolean(); + block.MuteVoice = mutesMap["voice"].AsBoolean(); + } updatesList.Add(block); } diff --git a/OpenMetaverse/Messages/MessageEventDecoder.cs b/OpenMetaverse/Messages/MessageEventDecoder.cs index a5d9673f..45095370 100644 --- a/OpenMetaverse/Messages/MessageEventDecoder.cs +++ b/OpenMetaverse/Messages/MessageEventDecoder.cs @@ -103,7 +103,7 @@ namespace OpenMetaverse } catch (Exception e) { - Logger.Log("Exception while tring to Deserialize " + eventName + ":" + e.Message, Helpers.LogLevel.Error); + Logger.Log("Exception while tring to Deserialize " + eventName + ":" + e.Message + ": " + e.StackTrace, Helpers.LogLevel.Error); } return null;