* Added a way for the sim stats reporter to say to the scene that the stats are illogical.
parent
0c3426935e
commit
0d1b867500
|
@ -360,6 +360,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
StatsReporter = new SimStatsReporter(this);
|
StatsReporter = new SimStatsReporter(this);
|
||||||
StatsReporter.OnSendStatsResult += SendSimStatsPackets;
|
StatsReporter.OnSendStatsResult += SendSimStatsPackets;
|
||||||
|
StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats;
|
||||||
|
|
||||||
StatsReporter.SetObjectCapacity(objectCapacity);
|
StatsReporter.SetObjectCapacity(objectCapacity);
|
||||||
|
|
||||||
|
|
|
@ -694,6 +694,24 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RecalculateStats()
|
||||||
|
{
|
||||||
|
List<ScenePresence> SPList = GetScenePresences();
|
||||||
|
int rootcount = 0;
|
||||||
|
int childcount = 0;
|
||||||
|
|
||||||
|
foreach (ScenePresence user in SPList)
|
||||||
|
{
|
||||||
|
if (user.IsChildAgent)
|
||||||
|
childcount++;
|
||||||
|
else
|
||||||
|
rootcount++;
|
||||||
|
}
|
||||||
|
m_numRootAgents = rootcount;
|
||||||
|
m_numChildAgents = childcount;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public int GetChildAgentCount()
|
public int GetChildAgentCount()
|
||||||
{
|
{
|
||||||
// some network situations come in where child agents get closed twice.
|
// some network situations come in where child agents get closed twice.
|
||||||
|
@ -1748,5 +1766,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,10 +39,16 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
public delegate void SendStatResult(SimStats stats);
|
public delegate void SendStatResult(SimStats stats);
|
||||||
|
|
||||||
|
public delegate void YourStatsAreWrong();
|
||||||
|
|
||||||
public event SendStatResult OnSendStatsResult;
|
public event SendStatResult OnSendStatsResult;
|
||||||
|
|
||||||
|
public event YourStatsAreWrong OnStatsIncorrect;
|
||||||
|
|
||||||
private SendStatResult handlerSendStatResult = null;
|
private SendStatResult handlerSendStatResult = null;
|
||||||
|
|
||||||
|
private YourStatsAreWrong handlerStatsIncorrect = null;
|
||||||
|
|
||||||
private enum Stats : uint
|
private enum Stats : uint
|
||||||
{
|
{
|
||||||
TimeDilation = 0,
|
TimeDilation = 0,
|
||||||
|
@ -306,15 +312,30 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void SetRootAgents(int rootAgents)
|
public void SetRootAgents(int rootAgents)
|
||||||
{
|
{
|
||||||
m_rootAgents = rootAgents;
|
m_rootAgents = rootAgents;
|
||||||
|
CheckStatSanity();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void CheckStatSanity()
|
||||||
|
{
|
||||||
|
if (m_rootAgents < 0 || m_childAgents < 0)
|
||||||
|
{
|
||||||
|
handlerStatsIncorrect = OnStatsIncorrect;
|
||||||
|
if (handlerStatsIncorrect != null)
|
||||||
|
{
|
||||||
|
handlerStatsIncorrect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_rootAgents == 0 && m_childAgents == 0)
|
||||||
|
{
|
||||||
|
m_unAckedBytes = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetChildAgents(int childAgents)
|
public void SetChildAgents(int childAgents)
|
||||||
{
|
{
|
||||||
m_childAgents = (childAgents > 0) ? childAgents : 0;
|
m_childAgents = childAgents;
|
||||||
if (childAgents < 0)
|
CheckStatSanity();
|
||||||
{
|
|
||||||
//List<ScenePresence> avs= m_scene.GetScenePresences();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetObjects(int objects)
|
public void SetObjects(int objects)
|
||||||
|
|
Loading…
Reference in New Issue