From b10710d4a5f7fb33ee9b90aefac16ac3d4647db6 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 7 Aug 2013 23:17:31 +0100
Subject: minor: add some method doc to ScenePresence fields used for entity
transfer, add minor details to some log messages, rename a misleading local
variable name.
No functional changes.
---
OpenSim/Framework/ChildAgentDataUpdate.cs | 6 +++++
.../EntityTransfer/EntityTransferModule.cs | 14 +++++++----
OpenSim/Region/Framework/Scenes/Scene.cs | 26 +++++++++++++--------
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 27 ++++++++++++++--------
4 files changed, 48 insertions(+), 25 deletions(-)
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs
index 1c5f558..18d008c 100644
--- a/OpenSim/Framework/ChildAgentDataUpdate.cs
+++ b/OpenSim/Framework/ChildAgentDataUpdate.cs
@@ -287,6 +287,12 @@ namespace OpenSim.Framework
public Vector3 AtAxis;
public Vector3 LeftAxis;
public Vector3 UpAxis;
+
+ ///
+ /// Signal on a V2 teleport that Scene.IncomingChildAgentDataUpdate(AgentData ad) should wait for the
+ /// scene presence to become root (triggered when the viewer sends a CompleteAgentMovement UDP packet after
+ /// establishing the connection triggered by it's receipt of a TeleportFinish EQ message).
+ ///
public bool SenderWantsToWaitForRoot;
public float Far;
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 80c125a..01ef710 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -688,8 +688,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
if (version.Equals("SIMULATION/0.2"))
TransferAgent_V2(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason);
else
- TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason);
-
+ TransferAgent_V1(sp, agentCircuit, reg, finalDestination, endPoint, teleportFlags, oldRegionX, newRegionX, oldRegionY, newRegionY, version, out reason);
}
private void TransferAgent_V1(ScenePresence sp, AgentCircuitData agentCircuit, GridRegion reg, GridRegion finalDestination,
@@ -698,7 +697,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
ulong destinationHandle = finalDestination.RegionHandle;
AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode);
- m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Using TP V1");
+ m_log.DebugFormat(
+ "[ENTITY TRANSFER MODULE]: Using TP V1 for {0} going from {1} to {2}",
+ sp.Name, Scene.Name, finalDestination.RegionName);
+
// Let's create an agent there if one doesn't exist yet.
// NOTE: logout will always be false for a non-HG teleport.
bool logout = false;
@@ -1079,20 +1081,22 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
if (!sp.DoNotCloseAfterTeleport)
{
// OK, it got this agent. Let's close everything
- m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Closing in agent {0} in region {1}", sp.Name, Scene.RegionInfo.RegionName);
+ m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Closing in agent {0} in region {1}", sp.Name, Scene.Name);
sp.CloseChildAgents(newRegionX, newRegionY);
sp.Scene.IncomingCloseAgent(sp.UUID, false);
}
else
{
- m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Not closing agent {0}, user is back in {0}", sp.Name, Scene.RegionInfo.RegionName);
+ m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Not closing agent {0}, user is back in {0}", sp.Name, Scene.Name);
sp.DoNotCloseAfterTeleport = false;
}
}
else
+ {
// now we have a child agent in this region.
sp.Reset();
+ }
}
///
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 503b81a..56cd57e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -4222,36 +4222,42 @@ namespace OpenSim.Region.Framework.Scenes
}
// We have to wait until the viewer contacts this region
- // after receiving the EnableSimulator HTTP Event Queue message. This triggers the viewer to send
+ // after receiving the EnableSimulator HTTP Event Queue message (for the v1 teleport protocol)
+ // or TeleportFinish (for the v2 teleport protocol). This triggers the viewer to send
// a UseCircuitCode packet which in turn calls AddNewClient which finally creates the ScenePresence.
- ScenePresence childAgentUpdate = WaitGetScenePresence(cAgentData.AgentID);
+ ScenePresence sp = WaitGetScenePresence(cAgentData.AgentID);
- if (childAgentUpdate != null)
+ if (sp != null)
{
- if (cAgentData.SessionID != childAgentUpdate.ControllingClient.SessionId)
+ if (cAgentData.SessionID != sp.ControllingClient.SessionId)
{
- m_log.WarnFormat("[SCENE]: Attempt to update agent {0} with invalid session id {1} (possibly from simulator in older version; tell them to update).", childAgentUpdate.UUID, cAgentData.SessionID);
+ m_log.WarnFormat(
+ "[SCENE]: Attempt to update agent {0} with invalid session id {1} (possibly from simulator in older version; tell them to update).",
+ sp.UUID, cAgentData.SessionID);
+
Console.WriteLine(String.Format("[SCENE]: Attempt to update agent {0} ({1}) with invalid session id {2}",
- childAgentUpdate.UUID, childAgentUpdate.ControllingClient.SessionId, cAgentData.SessionID));
+ sp.UUID, sp.ControllingClient.SessionId, cAgentData.SessionID));
}
- childAgentUpdate.ChildAgentDataUpdate(cAgentData);
+ sp.ChildAgentDataUpdate(cAgentData);
int ntimes = 20;
if (cAgentData.SenderWantsToWaitForRoot)
{
- while (childAgentUpdate.IsChildAgent && ntimes-- > 0)
+ while (sp.IsChildAgent && ntimes-- > 0)
Thread.Sleep(1000);
m_log.DebugFormat(
"[SCENE]: Found presence {0} {1} {2} in {3} after {4} waits",
- childAgentUpdate.Name, childAgentUpdate.UUID, childAgentUpdate.IsChildAgent ? "child" : "root", RegionInfo.RegionName, 20 - ntimes);
+ sp.Name, sp.UUID, sp.IsChildAgent ? "child" : "root", Name, 20 - ntimes);
- if (childAgentUpdate.IsChildAgent)
+ if (sp.IsChildAgent)
return false;
}
+
return true;
}
+
return false;
}
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0ba2dab..7fd1302 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -285,10 +285,24 @@ namespace OpenSim.Region.Framework.Scenes
///
private Vector3 posLastSignificantMove;
- // For teleports and crossings callbacks
+ #region For teleports and crossings callbacks
+
+ ///
+ /// In the V1 teleport protocol, the destination simulator sends ReleaseAgent to this address.
+ ///
string m_callbackURI;
+
UUID m_originRegionID;
+ ///
+ /// Used by the entity transfer module to signal when the presence should not be closed because a subsequent
+ /// teleport is reusing the connection.
+ ///
+ /// May be refactored or move somewhere else soon.
+ public bool DoNotCloseAfterTeleport { get; set; }
+
+ #endregion
+
///
/// Script engines present in the scene
///
@@ -717,13 +731,6 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- ///
- /// Used by the entity transfer module to signal when the presence should not be closed because a subsequent
- /// teleport is reusing the connection.
- ///
- /// May be refactored or move somewhere else soon.
- public bool DoNotCloseAfterTeleport { get; set; }
-
private float m_speedModifier = 1.0f;
public float SpeedModifier
@@ -1325,14 +1332,14 @@ namespace OpenSim.Region.Framework.Scenes
int count = 20;
while (m_originRegionID.Equals(UUID.Zero) && count-- > 0)
{
- m_log.DebugFormat("[SCENE PRESENCE]: Agent {0} waiting for update in {1}", client.Name, Scene.RegionInfo.RegionName);
+ m_log.DebugFormat("[SCENE PRESENCE]: Agent {0} waiting for update in {1}", client.Name, Scene.Name);
Thread.Sleep(200);
}
if (m_originRegionID.Equals(UUID.Zero))
{
// Movement into region will fail
- m_log.WarnFormat("[SCENE PRESENCE]: Update agent {0} never arrived", client.Name);
+ m_log.WarnFormat("[SCENE PRESENCE]: Update agent {0} never arrived in {1}", client.Name, Scene.Name);
return false;
}
--
cgit v1.1