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.
0.6.5-post-fixes
Melanie Thielker 2009-06-19 20:51:56 +00:00
parent f8666f3630
commit 2f581c0d0d
9 changed files with 13 additions and 13 deletions

View File

@ -381,7 +381,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
client.OnLogout += OnLogout; 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 // 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 // TPing away (root agent is closed) or TPing/crossing in a region far enough away (client

View File

@ -198,7 +198,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Groups
remote_client.SendGroupNameReply(groupUUID, groupnamereply); remote_client.SendGroupNameReply(groupUUID, groupnamereply);
} }
private void OnClientClosed(UUID agentID) private void OnClientClosed(UUID agentID, Scene scene)
{ {
lock (m_ClientMap) lock (m_ClientMap)
{ {

View File

@ -368,7 +368,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
return false; return false;
} }
public void ClientLoggedOut(UUID agentID) public void ClientLoggedOut(UUID agentID, Scene scene)
{ {
if (m_AgentRegions.ContainsKey(agentID)) if (m_AgentRegions.ContainsKey(agentID))
m_AgentRegions.Remove(agentID); m_AgentRegions.Remove(agentID);

View File

@ -198,7 +198,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
// ClientClosed(client.AgentId); // 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); m_log.DebugFormat("[EVENTQUEUE]: Closed client {0} in region {1}", AgentID, m_scene.RegionInfo.RegionName);

View File

@ -287,7 +287,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
/// Event handler /// Event handler
/// </summary> /// </summary>
/// <param name="AgentId">AgentID that logged out</param> /// <param name="AgentId">AgentID that logged out</param>
private void ClientLoggedOut(UUID AgentId) private void ClientLoggedOut(UUID AgentId, Scene scene)
{ {
List<ScenePresence> presences = m_scene.GetAvatars(); List<ScenePresence> presences = m_scene.GetAvatars();
int rootcount = 0; int rootcount = 0;

View File

@ -162,7 +162,7 @@ namespace OpenSim.Region.Framework.Scenes
public event IncomingInstantMessage OnUnhandledInstantMessage; public event IncomingInstantMessage OnUnhandledInstantMessage;
public delegate void ClientClosed(UUID clientID); public delegate void ClientClosed(UUID clientID, Scene scene);
public event ClientClosed OnClientClosed; 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; handlerClientClosed = OnClientClosed;
if (handlerClientClosed != null) if (handlerClientClosed != null)
{ {
handlerClientClosed(ClientID); handlerClientClosed(ClientID, scene);
} }
} }

View File

@ -2224,7 +2224,7 @@ namespace OpenSim.Region.Framework.Scenes
m_sceneGridService.SendCloseChildAgentConnections(agentID, regions); m_sceneGridService.SendCloseChildAgentConnections(agentID, regions);
} }
m_eventManager.TriggerClientClosed(agentID); m_eventManager.TriggerClientClosed(agentID, this);
} }
catch (NullReferenceException) catch (NullReferenceException)
{ {

View File

@ -697,7 +697,7 @@ namespace OpenSim.Region.ReplaceableModules.MoneyModule
/// When the client closes the connection we remove their accounting info from memory to free up resources. /// When the client closes the connection we remove their accounting info from memory to free up resources.
/// </summary> /// </summary>
/// <param name="AgentID"></param> /// <param name="AgentID"></param>
public void ClientClosed(UUID AgentID) public void ClientClosed(UUID AgentID, Scene scene)
{ {
} }
@ -759,7 +759,7 @@ namespace OpenSim.Region.ReplaceableModules.MoneyModule
/// Event Handler for when the client logs out. /// Event Handler for when the client logs out.
/// </summary> /// </summary>
/// <param name="AgentId"></param> /// <param name="AgentId"></param>
private void ClientLoggedOut(UUID AgentId) private void ClientLoggedOut(UUID AgentId, Scene scene)
{ {
} }
@ -770,7 +770,7 @@ namespace OpenSim.Region.ReplaceableModules.MoneyModule
/// <param name="client"></param> /// <param name="client"></param>
public void ClientClosed(IClientAPI client) public void ClientClosed(IClientAPI client)
{ {
ClientClosed(client.AgentId); ClientClosed(client.AgentId, null);
} }
/// <summary> /// <summary>

View File

@ -386,7 +386,7 @@ namespace OpenSim.Region.UserStatistics
} }
public void OnClientClosed(UUID agentID) public void OnClientClosed(UUID agentID, Scene scene)
{ {
lock (m_sessions) lock (m_sessions)
{ {