diff --git a/OpenSim/Framework/IScene.cs b/OpenSim/Framework/IScene.cs
index 8164f4198c..c3df37b8c8 100644
--- a/OpenSim/Framework/IScene.cs
+++ b/OpenSim/Framework/IScene.cs
@@ -86,7 +86,7 @@ namespace OpenSim.Framework
event restart OnRestart;
///
- /// Add a new client and create a presence for it. All clients except initial login clients will starts off as a child agent
+ /// Add a new agent. All agents except initial login clients will starts off as a child agent
/// - the later agent crossing will promote it to a root agent.
///
///
@@ -96,14 +96,16 @@ namespace OpenSim.Framework
ISceneAgent AddNewClient(IClientAPI client, PresenceType type);
///
- /// Remove the given client from the scene.
+ /// Tell a single agent to disconnect from the region.
///
///
- /// Close the neighbour child agents associated with this client.
- void RemoveClient(UUID agentID, bool closeChildAgents);
+ ///
+ /// Force the agent to close even if it might be in the middle of some other operation. You do not want to
+ /// force unless you are absolutely sure that the agent is dead and a normal close is not working.
+ ///
+ bool CloseAgent(UUID agentID, bool force);
void Restart();
- //RegionInfo OtherRegionUp(RegionInfo thisRegion);
string GetSimulatorVersion();
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index a7fe226cbe..12250df656 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -452,7 +452,7 @@ namespace OpenSim
else
presence.ControllingClient.Kick("\nThe OpenSim manager kicked you out.\n");
- presence.Scene.IncomingCloseAgent(presence.UUID, force);
+ presence.Scene.CloseAgent(presence.UUID, force);
break;
}
}
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
index b3b0b8acc0..9e24bcef15 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
@@ -96,7 +96,7 @@ namespace OpenSim.Region.ClientStack.Linden.Tests
UUID spId = TestHelpers.ParseTail(0x1);
SceneHelpers.AddScenePresence(m_scene, spId);
- m_scene.IncomingCloseAgent(spId, false);
+ m_scene.CloseAgent(spId, false);
// TODO: Add more assertions for the other aspects of event queues
Assert.That(MainServer.Instance.GetPollServiceHandlerKeys().Count, Is.EqualTo(0));
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 9504f15b28..5296a6d0d7 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -1893,7 +1893,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
client.Kick("Simulator logged you out due to connection timeout.");
}
- m_scene.IncomingCloseAgent(client.AgentId, true);
+ m_scene.CloseAgent(client.AgentId, true);
}
private void IncomingPacketHandler()
@@ -2234,7 +2234,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (!client.IsLoggingOut)
{
client.IsLoggingOut = true;
- m_scene.IncomingCloseAgent(client.AgentId, false);
+ m_scene.CloseAgent(client.AgentId, false);
}
}
}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs
index 119a677f80..28b5eb702f 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/MockScene.cs
@@ -59,10 +59,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
// FIXME
return null;
}
-
- public override void RemoveClient(UUID agentID, bool someReason) {}
-// public override void CloseAllAgents(uint circuitcode) {}
+
+ public override bool CloseAgent(UUID agentID, bool force) { return true; }
public override bool CheckClient(UUID clientId, IPEndPoint endPoint) { return true; }
+
public override void OtherRegionUp(GridRegion otherRegion) { }
public override bool TryGetScenePresence(UUID uuid, out ScenePresence sp) { sp = null; return false; }
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
index fd493fcbb6..4e58045f27 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
@@ -719,7 +719,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
SceneObjectGroup rezzedAtt = presence.GetAttachments()[0];
m_numberOfAttachEventsFired = 0;
- scene.IncomingCloseAgent(presence.UUID, false);
+ scene.CloseAgent(presence.UUID, false);
// Check that we can't retrieve this attachment from the scene.
Assert.That(scene.GetSceneObjectGroup(rezzedAtt.UUID), Is.Null);
diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
index 0cd495c5a4..3b6d970d4a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
@@ -272,7 +272,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods
if (sp.IsChildAgent)
return;
sp.ControllingClient.Kick(reason);
- sp.Scene.IncomingCloseAgent(sp.UUID, true);
+ sp.Scene.CloseAgent(sp.UUID, true);
}
private void OnIncomingInstantMessage(GridInstantMessage msg)
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 8ae81accb5..aa8a4db364 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -972,7 +972,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
{
- if (!sp.Scene.IncomingPreCloseAgent(sp))
+ if (!sp.Scene.IncomingPreCloseClient(sp))
return;
// We need to delay here because Imprudence viewers, unlike v1 or v3, have a short (<200ms, <500ms) delay before
@@ -983,7 +983,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// an agent cannot teleport back to this region if it has teleported away.
Thread.Sleep(2000);
- sp.Scene.IncomingCloseAgent(sp.UUID, false);
+ sp.Scene.CloseAgent(sp.UUID, false);
}
else
{
@@ -1137,7 +1137,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
{
- if (!sp.Scene.IncomingPreCloseAgent(sp))
+ if (!sp.Scene.IncomingPreCloseClient(sp))
return;
// RED ALERT!!!!
@@ -1154,7 +1154,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
m_log.DebugFormat(
"[ENTITY TRANSFER MODULE]: Closing agent {0} in {1} after teleport", sp.Name, Scene.Name);
- sp.Scene.IncomingCloseAgent(sp.UUID, false);
+ sp.Scene.CloseAgent(sp.UUID, false);
}
else
{
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
index 5c098a8ecb..678f3dc3a5 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
@@ -311,7 +311,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
// "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate",
// s.RegionInfo.RegionName, destination.RegionHandle);
- m_scenes[destination.RegionID].IncomingCloseAgent(id, false, auth_token);
+ m_scenes[destination.RegionID].CloseAgent(id, false, auth_token);
return true;
}
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 31547a69cb..42db1cf475 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -562,7 +562,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
if (!Scene.TeleportClientHome(user, s.ControllingClient))
{
s.ControllingClient.Kick("Your access to the region was revoked and TP home failed - you have been logged out.");
- Scene.IncomingCloseAgent(s.UUID, false);
+ Scene.CloseAgent(s.UUID, false);
}
}
}
@@ -797,7 +797,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
if (!Scene.TeleportClientHome(prey, s.ControllingClient))
{
s.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out.");
- Scene.IncomingCloseAgent(s.UUID, false);
+ Scene.CloseAgent(s.UUID, false);
}
}
}
@@ -820,7 +820,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
if (!Scene.TeleportClientHome(p.UUID, p.ControllingClient))
{
p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out.");
- Scene.IncomingCloseAgent(p.UUID, false);
+ Scene.CloseAgent(p.UUID, false);
}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 3dc509b728..82abfe9b1d 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1313,7 +1313,7 @@ namespace OpenSim.Region.Framework.Scenes
Thread.Sleep(500);
// Stop all client threads.
- ForEachScenePresence(delegate(ScenePresence avatar) { IncomingCloseAgent(avatar.UUID, false); });
+ ForEachScenePresence(delegate(ScenePresence avatar) { CloseAgent(avatar.UUID, false); });
m_log.Debug("[SCENE]: Persisting changed objects");
EventManager.TriggerSceneShuttingDown(this);
@@ -2976,7 +2976,7 @@ namespace OpenSim.Region.Framework.Scenes
{
PresenceService.LogoutAgent(sp.ControllingClient.SessionId);
- IncomingCloseAgent(sp.UUID, false);
+ CloseAgent(sp.UUID, false);
}
else
{
@@ -3398,7 +3398,7 @@ namespace OpenSim.Region.Framework.Scenes
///
/// Close the neighbour child agents associated with this client.
///
- public override void RemoveClient(UUID agentID, bool closeChildAgents)
+ public void RemoveClient(UUID agentID, bool closeChildAgents)
{
AgentCircuitData acd = m_authenticateHandler.GetAgentCircuitData(agentID);
@@ -3783,7 +3783,7 @@ namespace OpenSim.Region.Framework.Scenes
sp.Name, sp.UUID, RegionInfo.RegionName);
if (sp.ControllingClient != null)
- IncomingCloseAgent(sp.UUID, true);
+ CloseAgent(sp.UUID, true);
sp = null;
}
@@ -4424,7 +4424,7 @@ namespace OpenSim.Region.Framework.Scenes
///
///
///
- public bool IncomingCloseAgent(UUID agentID, bool force, string auth_token)
+ public bool CloseAgent(UUID agentID, bool force, string auth_token)
{
//m_log.DebugFormat("[SCENE]: Processing incoming close agent {0} in region {1} with auth_token {2}", agentID, RegionInfo.RegionName, auth_token);
@@ -4442,7 +4442,7 @@ namespace OpenSim.Region.Framework.Scenes
if (acd.SessionID.ToString() == auth_token)
{
- return IncomingCloseAgent(agentID, force);
+ return CloseAgent(agentID, force);
}
else
{
@@ -4455,16 +4455,16 @@ namespace OpenSim.Region.Framework.Scenes
}
///
- /// Tell a single agent to prepare to close.
+ /// Tell a single client to prepare to close.
///
///
- /// This should only be called if we may close the agent but there will be some delay in so doing. Meant for
- /// internal use - other callers should almost certainly called IncomingCloseAgent().
+ /// This should only be called if we may close the client but there will be some delay in so doing. Meant for
+ /// internal use - other callers should almost certainly called CloseClient().
///
///
/// true if pre-close state notification was successful. false if the agent
/// was not in a state where it could transition to pre-close.
- public bool IncomingPreCloseAgent(ScenePresence sp)
+ public bool IncomingPreCloseClient(ScenePresence sp)
{
lock (m_removeClientLock)
{
@@ -4506,7 +4506,7 @@ namespace OpenSim.Region.Framework.Scenes
/// Force the agent to close even if it might be in the middle of some other operation. You do not want to
/// force unless you are absolutely sure that the agent is dead and a normal close is not working.
///
- public bool IncomingCloseAgent(UUID agentID, bool force)
+ public override bool CloseAgent(UUID agentID, bool force)
{
ScenePresence sp;
@@ -4517,7 +4517,7 @@ namespace OpenSim.Region.Framework.Scenes
if (sp == null)
{
m_log.DebugFormat(
- "[SCENE]: Called IncomingCloseAgent() with agent ID {0} but no such presence is in {1}",
+ "[SCENE]: Called CloseClient() with agent ID {0} but no such presence is in {1}",
agentID, Name);
return false;
@@ -4526,7 +4526,7 @@ namespace OpenSim.Region.Framework.Scenes
if (sp.LifecycleState != ScenePresenceState.Running && sp.LifecycleState != ScenePresenceState.PreRemove)
{
m_log.DebugFormat(
- "[SCENE]: Called IncomingCloseAgent() for {0} in {1} but presence is already in state {2}",
+ "[SCENE]: Called CloseClient() for {0} in {1} but presence is already in state {2}",
sp.Name, Name, sp.LifecycleState);
return false;
diff --git a/OpenSim/Region/Framework/Scenes/SceneBase.cs b/OpenSim/Region/Framework/Scenes/SceneBase.cs
index 5252b9638a..4b37983716 100644
--- a/OpenSim/Region/Framework/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneBase.cs
@@ -218,19 +218,7 @@ namespace OpenSim.Region.Framework.Scenes
public abstract ISceneAgent AddNewClient(IClientAPI client, PresenceType type);
- ///
- /// Remove the given client from the scene.
- ///
- ///
- /// Only clientstack code should call this directly. All other code should call IncomingCloseAgent() instead
- /// to properly operate the state machine and avoid race conditions with other close requests (such as directly
- /// from viewers).
- ///
- /// ID of agent to close
- ///
- /// Close the neighbour child agents associated with this client.
- ///
- public abstract void RemoveClient(UUID agentID, bool closeChildAgents);
+ public abstract bool CloseAgent(UUID agentID, bool force);
public bool TryGetScenePresence(UUID agentID, out object scenePresence)
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
index bbe34d2b3d..e25bcb7349 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
@@ -146,7 +146,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
}
[Test]
- public void TestCloseAgent()
+ public void TestCloseClient()
{
TestHelpers.InMethod();
// TestHelpers.EnableLogging();
@@ -154,7 +154,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestScene scene = new SceneHelpers().SetupScene();
ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1));
- scene.IncomingCloseAgent(sp.UUID, false);
+ scene.CloseAgent(sp.UUID, false);
Assert.That(scene.GetScenePresence(sp.UUID), Is.Null);
Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null);
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCapabilityTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCapabilityTests.cs
index b6fb730840..4fdfc74f35 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCapabilityTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceCapabilityTests.cs
@@ -79,7 +79,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
// TODO: Need to add tests for other ICapabiltiesModule methods.
- scene.IncomingCloseAgent(sp.UUID, false);
+ scene.CloseAgent(sp.UUID, false);
Assert.That(capsMod.GetCapsForUser(spUuid), Is.Null);
// TODO: Need to add tests for other ICapabiltiesModule methods.
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index b86337075d..740f75ad66 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -384,7 +384,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
agentID, av.Name);
*/
- scene.IncomingCloseAgent(agentID, false);
+ scene.CloseAgent(agentID, false);
m_avatars.Remove(agentID);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 415166a8c6..f4d5562364 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2964,7 +2964,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
sp.ControllingClient.Kick(alert);
// ...and close on our side
- sp.Scene.IncomingCloseAgent(sp.UUID, false);
+ sp.Scene.CloseAgent(sp.UUID, false);
}
});
}