mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 17:55:48 +08:00
Add JSONification of WebStats module. Adds a '?json' query parameter
to the fetch URL to return the data in JSON format. Also adds a simple 'sim.html' that uses JavaScript to display the JSON data. Not pretty but an example.
This commit is contained in:
@@ -32,6 +32,7 @@ using System.Reflection;
|
||||
using System.Text;
|
||||
using Mono.Data.SqliteClient;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
using OpenSim.Framework.Monitoring;
|
||||
|
||||
@@ -218,6 +219,64 @@ namespace OpenSim.Region.UserStatistics
|
||||
return output.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return stat information for all regions in the sim. Returns data of the form:
|
||||
/// <pre>
|
||||
/// {"REGIONNAME": {
|
||||
/// "region": "REGIONNAME",
|
||||
/// "timeDilation": "101",
|
||||
/// ... // the rest of the stat info
|
||||
/// },
|
||||
/// ... // entries for each region
|
||||
/// }
|
||||
/// </pre>
|
||||
/// </summary>
|
||||
/// <param name="pModelResult"></param>
|
||||
/// <returns></returns>
|
||||
public string RenderJson(Hashtable pModelResult)
|
||||
{
|
||||
List<Scene> all_scenes = (List<Scene>) pModelResult["hdata"];
|
||||
Dictionary<UUID, USimStatsData> sdatadic = (Dictionary<UUID,USimStatsData>)pModelResult["simstats"];
|
||||
|
||||
OSDMap allStatsInfo = new OpenMetaverse.StructuredData.OSDMap();
|
||||
foreach (USimStatsData sdata in sdatadic.Values)
|
||||
{
|
||||
OSDMap statsInfo = new OpenMetaverse.StructuredData.OSDMap();
|
||||
string regionName = "unknown";
|
||||
foreach (Scene sn in all_scenes)
|
||||
{
|
||||
if (sn.RegionInfo.RegionID == sdata.RegionId)
|
||||
{
|
||||
regionName = sn.RegionInfo.RegionName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
statsInfo.Add("region", new OSDString(regionName));
|
||||
statsInfo.Add("timeDilation", new OSDString(sdata.TimeDilation.ToString()));
|
||||
statsInfo.Add("simFPS", new OSDString(sdata.SimFps.ToString()));
|
||||
statsInfo.Add("physicsFPS", new OSDString(sdata.PhysicsFps.ToString()));
|
||||
statsInfo.Add("agentUpdates", new OSDString(sdata.AgentUpdates.ToString()));
|
||||
statsInfo.Add("rootAgents", new OSDString(sdata.RootAgents.ToString()));
|
||||
statsInfo.Add("childAgents", new OSDString(sdata.ChildAgents.ToString()));
|
||||
statsInfo.Add("totalPrims", new OSDString(sdata.TotalPrims.ToString()));
|
||||
statsInfo.Add("activePrims", new OSDString(sdata.ActivePrims.ToString()));
|
||||
statsInfo.Add("activeScripts", new OSDString(sdata.ActiveScripts.ToString()));
|
||||
statsInfo.Add("scriptLinesPerSec", new OSDString(sdata.ScriptLinesPerSecond.ToString()));
|
||||
statsInfo.Add("totalFrameTime", new OSDString(sdata.TotalFrameTime.ToString()));
|
||||
statsInfo.Add("agentFrameTime", new OSDString(sdata.AgentFrameTime.ToString()));
|
||||
statsInfo.Add("physicsFrameTime", new OSDString(sdata.PhysicsFrameTime.ToString()));
|
||||
statsInfo.Add("otherFrameTime", new OSDString(sdata.OtherFrameTime.ToString()));
|
||||
statsInfo.Add("outPacketsPerSec", new OSDString(sdata.OutPacketsPerSecond.ToString()));
|
||||
statsInfo.Add("inPacketsPerSec", new OSDString(sdata.InPacketsPerSecond.ToString()));
|
||||
statsInfo.Add("unackedByptes", new OSDString(sdata.UnackedBytes.ToString()));
|
||||
statsInfo.Add("pendingDownloads", new OSDString(sdata.PendingDownloads.ToString()));
|
||||
statsInfo.Add("pendingUploads", new OSDString(sdata.PendingUploads.ToString()));
|
||||
|
||||
allStatsInfo.Add(regionName, statsInfo);
|
||||
}
|
||||
return allStatsInfo.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user