From 6ac12a42ec81dbd7538c61554e410893000e5fb3 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 24 Sep 2014 23:03:39 +0100 Subject: Add "debug lludp packet" command to pCampbot. This allows one to log the packets received by a particular bot that are not duplicates of already received packets. Similar to the OpenSimulator command at the same name but currently any positive level logs all received packets. No facility yet for logging outgoing packets. For debug purposes. --- OpenSim/Tools/pCampBot/Bot.cs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'OpenSim/Tools/pCampBot/Bot.cs') diff --git a/OpenSim/Tools/pCampBot/Bot.cs b/OpenSim/Tools/pCampBot/Bot.cs index 45a6682..4f28733 100644 --- a/OpenSim/Tools/pCampBot/Bot.cs +++ b/OpenSim/Tools/pCampBot/Bot.cs @@ -35,6 +35,7 @@ using System.Timers; using log4net; using OpenMetaverse; using OpenMetaverse.Assets; +using OpenMetaverse.Packets; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Console; @@ -56,6 +57,27 @@ namespace pCampBot { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public int PacketDebugLevel + { + get { return m_packetDebugLevel; } + set + { + if (value == m_packetDebugLevel) + return; + + m_packetDebugLevel = value; + + if (Client != null) + { + if (m_packetDebugLevel <= 0) + Client.Network.UnregisterCallback(PacketType.Default, PacketReceivedDebugHandler); + else + Client.Network.RegisterCallback(PacketType.Default, PacketReceivedDebugHandler, false); + } + } + } + private int m_packetDebugLevel; + public delegate void AnEvent(Bot callbot, EventType someevent); // event delegate for bot events /// @@ -231,6 +253,9 @@ namespace pCampBot if (Client != null) { + // Remove any registered debug handlers + Client.Network.UnregisterCallback(PacketType.Default, PacketReceivedDebugHandler); + newClient.Settings.LOGIN_SERVER = Client.Settings.LOGIN_SERVER; newClient.Settings.ALWAYS_DECODE_OBJECTS = Client.Settings.ALWAYS_DECODE_OBJECTS; newClient.Settings.AVATAR_TRACKING = Client.Settings.AVATAR_TRACKING; @@ -273,6 +298,9 @@ namespace pCampBot newClient.Network.Disconnected += Network_OnDisconnected; newClient.Objects.ObjectUpdate += Objects_NewPrim; + if (m_packetDebugLevel > 0) + newClient.Network.RegisterCallback(PacketType.Default, PacketReceivedDebugHandler); + Client = newClient; } @@ -705,5 +733,16 @@ namespace pCampBot // SaveAsset((AssetWearable) asset); // } } + + private void PacketReceivedDebugHandler(object o, PacketReceivedEventArgs args) + { + Packet p = args.Packet; + Header h = p.Header; + Simulator s = args.Simulator; + + m_log.DebugFormat( + "[BOT]: Bot {0} received from {1} packet {2} #{3}, rel {4}, res {5}", + Name, s.Name, p.Type, h.Sequence, h.Reliable, h.Resent); + } } } -- cgit v1.1