From d4d2c1959481d6d5e04a646c0b34f954b1bc727d Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Mon, 12 Jan 2009 18:45:03 +0000 Subject: * Extend PacketHandlerTest to fire in a packet. * Can't test result yet since the Client thread handles it with unpredictable timing --- .../Region/ClientStack/LindenUDP/ILLPacketHandler.cs | 14 ++++++++++++++ OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 17 +++++++++++------ OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs | 3 ++- OpenSim/Region/ClientStack/LindenUDP/LLPacketServer.cs | 7 ++++--- .../ClientStack/LindenUDP/Tests/PacketHandlerTests.cs | 8 +++++++- OpenSim/Tests/Common/Mock/TestClient.cs | 16 ++++++++-------- 6 files changed, 46 insertions(+), 19 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs index b857163..6c26784 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs @@ -36,6 +36,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP public delegate void PacketDrop(Packet pack, Object id); public delegate bool SynchronizeClientHandler(IScene scene, Packet packet, UUID agentID, ThrottleOutPacketType throttlePacketType); + /// + /// Interface to a class that handles all the activity involved with maintaining the client circuit (handling acks, + /// resends, pings, etc.) + /// public interface ILLPacketHandler { event PacketStats OnPacketStats; @@ -48,8 +52,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP bool ReliableIsImportant { get; set; } int MaxReliableResends { get; set; } + /// + /// Initial handling of a received packet. It will be processed later in ProcessInPacket() + /// + /// void InPacket(Packet packet); + + /// + /// Take action depending on the type and contents of an received packet. + /// + /// void ProcessInPacket(LLQueItem item); + void ProcessOutPacket(LLQueItem item); void OutPacket(Packet NewPack, ThrottleOutPacketType throttlePacketType); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index c70163c..3243c2f 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4109,7 +4109,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_PacketHandler.InPacket((Packet) NewPack); } - /// /// This is the starting point for sending a simulator packet out to the client. /// @@ -4185,8 +4184,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } /// - /// Entryway from the client to the simulator - /// all UDP packets from the client will end up here + /// Entryway from the client to the simulator. All UDP packets from the client will end up here /// /// OpenMetaverse.packet public void ProcessInPacket(Packet Pack) @@ -4483,6 +4481,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } break; + case PacketType.RezSingleAttachmentFromInv: handlerRezSingleAttachment = OnRezSingleAttachmentFromInv; if (handlerRezSingleAttachment != null) @@ -4493,6 +4492,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } break; + case PacketType.DetachAttachmentIntoInv: handlerDetachAttachmentIntoInv = OnDetachAttachmentIntoInv; if (handlerDetachAttachmentIntoInv != null) @@ -4505,6 +4505,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP handlerDetachAttachmentIntoInv(itemID, this); } break; + case PacketType.ObjectAttach: if (OnObjectAttach != null) { @@ -4520,10 +4521,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } } - break; + case PacketType.ObjectDetach: - ObjectDetachPacket dett = (ObjectDetachPacket)Pack; for (int j = 0; j < dett.ObjectData.Length; j++) { @@ -4535,8 +4535,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } - break; + case PacketType.ObjectDrop: ObjectDropPacket dropp = (ObjectDropPacket)Pack; for (int j = 0; j < dropp.ObjectData.Length; j++) @@ -4549,6 +4549,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } break; + case PacketType.SetAlwaysRun: SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack; @@ -4557,6 +4558,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP handlerSetAlwaysRun(this, run.AgentData.AlwaysRun); break; + case PacketType.CompleteAgentMovement: handlerCompleteMovementToRegion = OnCompleteMovementToRegion; if (handlerCompleteMovementToRegion != null) @@ -4566,6 +4568,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP handlerCompleteMovementToRegion = null; break; + case PacketType.AgentUpdate: if (OnAgentUpdate != null) { @@ -4594,6 +4597,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP //agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotationa); } break; + case PacketType.AgentAnimation: AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; @@ -4620,6 +4624,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } break; + case PacketType.AgentRequestSit: if (OnAgentRequestSit != null) { diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs index 7b102ec..97d75e1 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs @@ -524,7 +524,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP else if (packet.Type == PacketType.StartPingCheck) { StartPingCheckPacket startPing = (StartPingCheckPacket)packet; - CompletePingCheckPacket endPing = (CompletePingCheckPacket)PacketPool.Instance.GetPacket(PacketType.CompletePingCheck); + CompletePingCheckPacket endPing + = (CompletePingCheckPacket)PacketPool.Instance.GetPacket(PacketType.CompletePingCheck); endPing.PingID.PingID = startPing.PingID.PingID; OutPacket(endPing, ThrottleOutPacketType.Task); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketServer.cs index 5fd3619..9f8383c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketServer.cs @@ -36,6 +36,10 @@ using OpenSim.Framework.Communications.Cache; namespace OpenSim.Region.ClientStack.LindenUDP { + /// + /// This class sets up new client stacks. It also handles the immediate distribution of incoming packets to + /// client stacks + /// public class LLPacketServer { // private static readonly log4net.ILog m_log @@ -185,9 +189,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP public virtual void CloseCircuit(uint circuitcode) { m_networkHandler.RemoveClientCircuit(circuitcode); - - // XXX: Why is this commented out? Possibly because close mechanisms are so tangled right now - //m_scene.ClientManager.CloseAllAgents(circuitcode); } /// diff --git a/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs b/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs index 305a620..ac5175c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/Tests/PacketHandlerTests.cs @@ -27,7 +27,9 @@ using Nini.Config; using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; +using OpenMetaverse.Packets; using OpenSim.Framework; using OpenSim.Region.ClientStack.LindenUDP; using OpenSim.Tests.Common.Mock; @@ -63,7 +65,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests AgentCircuitManager acm; SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm); - new LLPacketHandler(new TestClient(agent), testLLPacketServer, new ClientStackUserSettings()); + ILLPacketHandler packetHandler + = new LLPacketHandler(new TestClient(agent), testLLPacketServer, new ClientStackUserSettings()); + + packetHandler.InPacket(new AgentAnimationPacket()); + //Assert.That(Is.Not.Null(packetHandler.PacketQueue.Dequeue())); } /// diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index b5d6f6b..41c2eb6 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -343,6 +343,14 @@ namespace OpenSim.Tests.Common.Mock set { } } + private uint m_circuitCode; + + public uint CircuitCode + { + get { return m_circuitCode; } + set { m_circuitCode = value; } + } + /// /// Constructor /// @@ -753,14 +761,6 @@ namespace OpenSim.Tests.Common.Mock { } - private uint m_circuitCode; - - public uint CircuitCode - { - get { return m_circuitCode; } - set { m_circuitCode = value; } - } - public void SendBlueBoxMessage(UUID FromAvatarID, String FromAvatarName, String Message) { -- cgit v1.1