From 4f6c4378dad0f4122bdab9270fd7aaf3c60beb39 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Sat, 28 Mar 2009 04:21:44 +0000
Subject: Add mute list request event and dummy response

---
 OpenSim/Client/MXP/ClientStack/MXPClientView.cs    |  5 ++++
 OpenSim/Framework/IClientAPI.cs                    |  5 ++++
 .../Region/ClientStack/LindenUDP/LLClientView.cs   | 28 ++++++++++++++++++++--
 .../Region/Examples/SimpleModule/MyNpcCharacter.cs |  6 +++++
 .../Region/OptionalModules/World/NPC/NPCAvatar.cs  |  6 +++++
 OpenSim/Tests/Common/Mock/TestClient.cs            |  6 +++++
 6 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
index 4f4bd93..548c657 100644
--- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
+++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
@@ -746,6 +746,7 @@ namespace OpenSim.Client.MXP.ClientStack
         public event PickGodDelete OnPickGodDelete;
         public event PickInfoUpdate OnPickInfoUpdate;
         public event AvatarNotesUpdate OnAvatarNotesUpdate;
+        public event MuteListRequest OnMuteListRequest;
         #pragma warning restore 67
 
         #endregion
@@ -1596,5 +1597,9 @@ namespace OpenSim.Client.MXP.ClientStack
         public void SendCreateGroupReply(UUID groupID, bool success, string message)
         {
         }
+
+        public void SendUseCachedMuteList()
+        {
+        }
     }
 }
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 66699b1..6d9ed79 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -431,6 +431,7 @@ namespace OpenSim.Framework
     public delegate void PickGodDelete(IClientAPI client, UUID agentID, UUID pickID, UUID queryID);
     public delegate void PickInfoUpdate(IClientAPI client, UUID pickID, UUID creatorID, bool topPick, string name, string desc, UUID snapshotID, int sortOrder, bool enabled);
     public delegate void AvatarNotesUpdate(IClientAPI client, UUID targetID, string notes);
+    public delegate void MuteListRequest(IClientAPI client, uint muteCRC);
 
     #endregion
 
@@ -764,6 +765,8 @@ namespace OpenSim.Framework
         event PickGodDelete OnPickGodDelete;
         event PickInfoUpdate OnPickInfoUpdate;
         event AvatarNotesUpdate OnAvatarNotesUpdate;
+
+        event MuteListRequest OnMuteListRequest;
         
         /// <summary>
         /// Set the debug level at which packet output should be printed to console.
@@ -1128,6 +1131,8 @@ namespace OpenSim.Framework
         void SendParcelDwellReply(int localID, UUID parcelID, float dwell);
 
         void SendUserInfoReply(bool imViaEmail, bool visible, string email);
+        
+        void SendUseCachedMuteList();
 
         void KillEndDone();
 
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 07f72c3..b65b3f9 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -303,6 +303,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         private PickInfoUpdate handlerPickInfoUpdate;
         private AvatarNotesUpdate handlerAvatarNotesUpdate;
 
+        private MuteListRequest handlerMuteListRequest;
+
         private readonly IGroupsModule m_GroupsModule;
 
         //private TerrainUnacked handlerUnackedTerrain = null;
@@ -1093,6 +1095,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         public event PickInfoUpdate OnPickInfoUpdate;
         public event AvatarNotesUpdate OnAvatarNotesUpdate;
 
+        public event MuteListRequest OnMuteListRequest;
+
         public void ActivateGesture(UUID assetId, UUID gestureId)
         {
         }
@@ -6822,8 +6826,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
                     //m_log.Warn("[CLIENT]: unhandled TransferAbort packet");
                     break;
                 case PacketType.MuteListRequest:
-                    // TODO: handle this packet
-                    //m_log.Warn("[CLIENT]: unhandled MuteListRequest packet");
+                    MuteListRequestPacket muteListRequest =
+                            (MuteListRequestPacket)Pack;
+
+                    handlerMuteListRequest = OnMuteListRequest;
+                    if (handlerMuteListRequest != null)
+                    {
+                        handlerMuteListRequest(this, muteListRequest.MuteData.MuteCRC);
+                    }
+                    else
+                    {
+                        SendUseCachedMuteList();
+                    }
                     break;
                 case PacketType.UseCircuitCode:
                     // Don't display this one, we handle it at a lower level
@@ -8676,6 +8690,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             OutPacket(createGroupReply, ThrottleOutPacketType.Task);
         }
 
+        public void SendUseCachedMuteList()
+        {
+            UseCachedMuteListPacket useCachedMuteList = (UseCachedMuteListPacket)PacketPool.Instance.GetPacket(PacketType.UseCachedMuteList);
+
+            useCachedMuteList.AgentData = new UseCachedMuteListPacket.AgentDataBlock();
+            useCachedMuteList.AgentData.AgentID = AgentId;
+
+            OutPacket(useCachedMuteList, ThrottleOutPacketType.Task);
+        }
+
         public string Report()
         {
             LLPacketHandler handler = (LLPacketHandler) m_PacketHandler;
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
index c5b6a1e..fa01a42 100644
--- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
@@ -260,6 +260,8 @@ namespace OpenSim.Region.Examples.SimpleModule
         public event PickInfoUpdate OnPickInfoUpdate;
         public event AvatarNotesUpdate OnAvatarNotesUpdate;
 
+        public event MuteListRequest OnMuteListRequest;
+
 #pragma warning restore 67
 
         private UUID myID = UUID.Random();
@@ -1062,6 +1064,10 @@ namespace OpenSim.Region.Examples.SimpleModule
         {
         }
 
+        public void SendUseCachedMuteList()
+        {
+        }
+
         #endregion
     }
 }
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index e810b4e..4bf4341 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -366,6 +366,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC
         public event PickInfoUpdate OnPickInfoUpdate;
         public event AvatarNotesUpdate OnAvatarNotesUpdate;
 
+        public event MuteListRequest OnMuteListRequest;
+
 #pragma warning restore 67
 
         #endregion
@@ -1062,6 +1064,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC
         {
         }
 
+        public void SendUseCachedMuteList()
+        {
+        }
+
         #endregion
     }
 }
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index fac0185..f96057c 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -273,6 +273,8 @@ namespace OpenSim.Tests.Common.Mock
         public event PickInfoUpdate OnPickInfoUpdate;
         public event AvatarNotesUpdate OnAvatarNotesUpdate;
 
+        public event MuteListRequest OnMuteListRequest;
+
 #pragma warning restore 67
 
         /// <value>
@@ -1103,5 +1105,9 @@ namespace OpenSim.Tests.Common.Mock
         public void SendCreateGroupReply(UUID groupID, bool success, string message)
         {
         }
+
+        public void SendUseCachedMuteList()
+        {
+        }
     }
 }
-- 
cgit v1.1