From e4d26d7bfa4b4d4e775531a7dd400f41fc61f45f Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Fri, 19 Jun 2009 20:46:17 +0000
Subject: When a shared module hooks OnClientClosed, it has no way of finding
out which client connection has closed. So, in multi-region sims, things can
get messy fast. This introduces a second parameters, which is a Scene object
ref. Minor adjustments to custom modules may be required due to this change.
---
OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | 2 +-
OpenSim/Region/CoreModules/Avatar/Groups/GroupsModule.cs | 2 +-
.../Avatar/Inventory/Transfer/InventoryTransferModule.cs | 2 +-
.../Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs | 2 +-
OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | 2 +-
OpenSim/Region/Framework/Scenes/EventManager.cs | 6 +++---
OpenSim/Region/Framework/Scenes/Scene.cs | 2 +-
OpenSim/Region/ReplaceableModules/MoneyModule/SampleMoneyModule.cs | 6 +++---
OpenSim/Region/UserStatistics/WebStatsModule.cs | 2 +-
9 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index 8afb8fe..b98bfaf 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -382,7 +382,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
client.OnLogout += OnLogout;
}
- private void ClientClosed(UUID AgentId)
+ private void ClientClosed(UUID AgentId, Scene scene)
{
// agent's client was closed. As we handle logout in OnLogout, this here has only to handle
// TPing away (root agent is closed) or TPing/crossing in a region far enough away (client
diff --git a/OpenSim/Region/CoreModules/Avatar/Groups/GroupsModule.cs b/OpenSim/Region/CoreModules/Avatar/Groups/GroupsModule.cs
index a733585..31363e5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Groups/GroupsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Groups/GroupsModule.cs
@@ -198,7 +198,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Groups
remote_client.SendGroupNameReply(groupUUID, groupnamereply);
}
- private void OnClientClosed(UUID agentID)
+ private void OnClientClosed(UUID agentID, Scene scene)
{
lock (m_ClientMap)
{
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index 12f5d19..d862c06 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -368,7 +368,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
return false;
}
- public void ClientLoggedOut(UUID agentID)
+ public void ClientLoggedOut(UUID agentID, Scene scene)
{
if (m_AgentRegions.ContainsKey(agentID))
m_AgentRegions.Remove(agentID);
diff --git a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs
index a94f23f..3dcf342 100644
--- a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs
@@ -198,7 +198,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
// ClientClosed(client.AgentId);
// }
- private void ClientClosed(UUID AgentID)
+ private void ClientClosed(UUID AgentID, Scene scene)
{
m_log.DebugFormat("[EVENTQUEUE]: Closed client {0} in region {1}", AgentID, m_scene.RegionInfo.RegionName);
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 6fe0b57..16c02a3 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -287,7 +287,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
/// Event handler
///
/// AgentID that logged out
- private void ClientLoggedOut(UUID AgentId)
+ private void ClientLoggedOut(UUID AgentId, Scene scene)
{
List presences = m_scene.GetAvatars();
int rootcount = 0;
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 08ec1aa..4b3e45f 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -162,7 +162,7 @@ namespace OpenSim.Region.Framework.Scenes
public event IncomingInstantMessage OnUnhandledInstantMessage;
- public delegate void ClientClosed(UUID clientID);
+ public delegate void ClientClosed(UUID clientID, Scene scene);
public event ClientClosed OnClientClosed;
@@ -733,12 +733,12 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- public void TriggerClientClosed(UUID ClientID)
+ public void TriggerClientClosed(UUID ClientID, Scene scene)
{
handlerClientClosed = OnClientClosed;
if (handlerClientClosed != null)
{
- handlerClientClosed(ClientID);
+ handlerClientClosed(ClientID, scene);
}
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index d3437b9..8f6e920 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2246,7 +2246,7 @@ namespace OpenSim.Region.Framework.Scenes
m_sceneGridService.SendCloseChildAgentConnections(agentID, regions);
}
- m_eventManager.TriggerClientClosed(agentID);
+ m_eventManager.TriggerClientClosed(agentID, this);
}
catch (NullReferenceException)
{
diff --git a/OpenSim/Region/ReplaceableModules/MoneyModule/SampleMoneyModule.cs b/OpenSim/Region/ReplaceableModules/MoneyModule/SampleMoneyModule.cs
index 5a5ba6d..6251293 100644
--- a/OpenSim/Region/ReplaceableModules/MoneyModule/SampleMoneyModule.cs
+++ b/OpenSim/Region/ReplaceableModules/MoneyModule/SampleMoneyModule.cs
@@ -698,7 +698,7 @@ namespace OpenSim.Region.ReplaceableModules.MoneyModule
/// When the client closes the connection we remove their accounting info from memory to free up resources.
///
///
- public void ClientClosed(UUID AgentID)
+ public void ClientClosed(UUID AgentID, Scene scene)
{
}
@@ -760,7 +760,7 @@ namespace OpenSim.Region.ReplaceableModules.MoneyModule
/// Event Handler for when the client logs out.
///
///
- private void ClientLoggedOut(UUID AgentId)
+ private void ClientLoggedOut(UUID AgentId, Scene scene)
{
}
@@ -771,7 +771,7 @@ namespace OpenSim.Region.ReplaceableModules.MoneyModule
///
public void ClientClosed(IClientAPI client)
{
- ClientClosed(client.AgentId);
+ ClientClosed(client.AgentId, null);
}
///
diff --git a/OpenSim/Region/UserStatistics/WebStatsModule.cs b/OpenSim/Region/UserStatistics/WebStatsModule.cs
index 756a5d0..4f6fcce 100644
--- a/OpenSim/Region/UserStatistics/WebStatsModule.cs
+++ b/OpenSim/Region/UserStatistics/WebStatsModule.cs
@@ -386,7 +386,7 @@ namespace OpenSim.Region.UserStatistics
}
- public void OnClientClosed(UUID agentID)
+ public void OnClientClosed(UUID agentID, Scene scene)
{
lock (m_sessions)
{
--
cgit v1.1