OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
SimStatsAJAX.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) Contributors, http://opensimulator.org/
3  * See CONTRIBUTORS.TXT for a full list of copyright holders.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the OpenSimulator Project nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 using System;
29 using System.Collections;
30 using System.Collections.Generic;
31 using System.Reflection;
32 using System.Text;
33 using Mono.Data.SqliteClient;
34 using OpenMetaverse;
35 using OpenMetaverse.StructuredData;
36 using OpenSim.Region.Framework.Scenes;
37 using OpenSim.Framework.Monitoring;
38 
39 namespace OpenSim.Region.UserStatistics
40 {
42  {
43  #region IStatsController Members
44 
45  public string ReportName
46  {
47  get { return ""; }
48  }
49 
50  public Hashtable ProcessModel(Hashtable pParams)
51  {
52  List<Scene> m_scene = (List<Scene>)pParams["Scenes"];
53 
54  Hashtable nh = new Hashtable();
55  nh.Add("hdata", m_scene);
56  nh.Add("simstats", pParams["SimStats"]);
57  return nh;
58  }
59 
60  public string RenderView(Hashtable pModelResult)
61  {
62  StringBuilder output = new StringBuilder();
63  List<Scene> all_scenes = (List<Scene>) pModelResult["hdata"];
64  Dictionary<UUID, USimStatsData> sdatadic = (Dictionary<UUID,USimStatsData>)pModelResult["simstats"];
65 
66  const string TableClass = "defaultr";
67  const string TRClass = "defaultr";
68  const string TDHeaderClass = "header";
69  const string TDDataClass = "content";
70  //const string TDDataClassRight = "contentright";
71  const string TDDataClassCenter = "contentcenter";
72 
73  foreach (USimStatsData sdata in sdatadic.Values)
74  {
75 
76 
77  foreach (Scene sn in all_scenes)
78  {
79  if (sn.RegionInfo.RegionID == sdata.RegionId)
80  {
81  output.Append("<H2>");
82  output.Append(sn.RegionInfo.RegionName);
83  output.Append("</H2>");
84  }
85  }
86  HTMLUtil.TABLE_O(ref output, TableClass);
87  HTMLUtil.TR_O(ref output, TRClass);
88  HTMLUtil.TD_O(ref output, TDHeaderClass);
89  output.Append("Dilatn");
90  HTMLUtil.TD_C(ref output);
91  HTMLUtil.TD_O(ref output, TDHeaderClass);
92  output.Append("SimFPS");
93  HTMLUtil.TD_C(ref output);
94  HTMLUtil.TD_O(ref output, TDHeaderClass);
95  output.Append("PhysFPS");
96  HTMLUtil.TD_C(ref output);
97  HTMLUtil.TD_O(ref output, TDHeaderClass);
98  output.Append("AgntUp");
99  HTMLUtil.TD_C(ref output);
100  HTMLUtil.TD_O(ref output, TDHeaderClass);
101  output.Append("RootAg");
102  HTMLUtil.TD_C(ref output);
103  HTMLUtil.TD_O(ref output, TDHeaderClass);
104  output.Append("ChldAg");
105  HTMLUtil.TD_C(ref output);
106  HTMLUtil.TD_O(ref output, TDHeaderClass);
107  output.Append("Prims");
108  HTMLUtil.TD_C(ref output);
109  HTMLUtil.TD_O(ref output, TDHeaderClass);
110  output.Append("ATvPrm");
111  HTMLUtil.TD_C(ref output);
112  HTMLUtil.TD_O(ref output, TDHeaderClass);
113  output.Append("AtvScr");
114  HTMLUtil.TD_C(ref output);
115  HTMLUtil.TD_O(ref output, TDHeaderClass);
116  output.Append("ScrLPS");
117  HTMLUtil.TD_C(ref output);
118  HTMLUtil.TR_C(ref output);
119  HTMLUtil.TR_O(ref output, TRClass);
120  HTMLUtil.TD_O(ref output, TDDataClass);
121  output.Append(sdata.TimeDilation);
122  HTMLUtil.TD_C(ref output);
123  HTMLUtil.TD_O(ref output, TDDataClass);
124  output.Append(sdata.SimFps);
125  HTMLUtil.TD_C(ref output);
126  HTMLUtil.TD_O(ref output, TDDataClassCenter);
127  output.Append(sdata.PhysicsFps);
128  HTMLUtil.TD_C(ref output);
129  HTMLUtil.TD_O(ref output, TDDataClassCenter);
130  output.Append(sdata.AgentUpdates);
131  HTMLUtil.TD_C(ref output);
132  HTMLUtil.TD_O(ref output, TDDataClassCenter);
133  output.Append(sdata.RootAgents);
134  HTMLUtil.TD_C(ref output);
135  HTMLUtil.TD_O(ref output, TDDataClassCenter);
136  output.Append(sdata.ChildAgents);
137  HTMLUtil.TD_C(ref output);
138  HTMLUtil.TD_O(ref output, TDDataClassCenter);
139  output.Append(sdata.TotalPrims);
140  HTMLUtil.TD_C(ref output);
141  HTMLUtil.TD_O(ref output, TDDataClassCenter);
142  output.Append(sdata.ActivePrims);
143  HTMLUtil.TD_C(ref output);
144  HTMLUtil.TD_O(ref output, TDDataClassCenter);
145  output.Append(sdata.ActiveScripts);
146  HTMLUtil.TD_C(ref output);
147  HTMLUtil.TD_O(ref output, TDDataClassCenter);
148  output.Append(sdata.ScriptLinesPerSecond);
149  HTMLUtil.TD_C(ref output);
150  HTMLUtil.TR_C(ref output);
151  HTMLUtil.TR_O(ref output, TRClass);
152  HTMLUtil.TD_O(ref output, TDHeaderClass);
153  output.Append("FrmMS");
154  HTMLUtil.TD_C(ref output);
155  HTMLUtil.TD_O(ref output, TDHeaderClass);
156  output.Append("AgtMS");
157  HTMLUtil.TD_C(ref output);
158  HTMLUtil.TD_O(ref output, TDHeaderClass);
159  output.Append("PhysMS");
160  HTMLUtil.TD_C(ref output);
161  HTMLUtil.TD_O(ref output, TDHeaderClass);
162  output.Append("OthrMS");
163  HTMLUtil.TD_C(ref output);
164  HTMLUtil.TD_O(ref output, TDHeaderClass);
165  output.Append("OutPPS");
166  HTMLUtil.TD_C(ref output);
167  HTMLUtil.TD_O(ref output, TDHeaderClass);
168  output.Append("InPPS");
169  HTMLUtil.TD_C(ref output);
170  HTMLUtil.TD_O(ref output, TDHeaderClass);
171  output.Append("NoAckKB");
172  HTMLUtil.TD_C(ref output);
173  HTMLUtil.TD_O(ref output, TDHeaderClass);
174  output.Append("PndDWN");
175  HTMLUtil.TD_C(ref output);
176  HTMLUtil.TD_O(ref output, TDHeaderClass);
177  output.Append("PndUP");
178  HTMLUtil.TD_C(ref output);
179  HTMLUtil.TR_C(ref output);
180  HTMLUtil.TR_O(ref output, TRClass);
181  HTMLUtil.TD_O(ref output, TDDataClass);
182  output.Append(sdata.TotalFrameTime);
183  HTMLUtil.TD_C(ref output);
184  HTMLUtil.TD_O(ref output, TDDataClass);
185  output.Append(sdata.AgentFrameTime);
186  HTMLUtil.TD_C(ref output);
187  HTMLUtil.TD_O(ref output, TDDataClassCenter);
188  output.Append(sdata.PhysicsFrameTime);
189  HTMLUtil.TD_C(ref output);
190  HTMLUtil.TD_O(ref output, TDDataClassCenter);
191  output.Append(sdata.OtherFrameTime);
192  HTMLUtil.TD_C(ref output);
193  HTMLUtil.TD_O(ref output, TDDataClassCenter);
194  output.Append(sdata.OutPacketsPerSecond);
195  HTMLUtil.TD_C(ref output);
196  HTMLUtil.TD_O(ref output, TDDataClassCenter);
197  output.Append(sdata.InPacketsPerSecond);
198  HTMLUtil.TD_C(ref output);
199  HTMLUtil.TD_O(ref output, TDDataClassCenter);
200  output.Append(sdata.UnackedBytes);
201  HTMLUtil.TD_C(ref output);
202  HTMLUtil.TD_O(ref output, TDDataClassCenter);
203  output.Append(sdata.PendingDownloads);
204  HTMLUtil.TD_C(ref output);
205  HTMLUtil.TD_O(ref output, TDDataClassCenter);
206  output.Append(sdata.PendingUploads);
207  HTMLUtil.TD_C(ref output);
208  HTMLUtil.TR_C(ref output);
209  HTMLUtil.TABLE_C(ref output);
210 
211  }
212 
213  return output.ToString();
214  }
215 
230  public string RenderJson(Hashtable pModelResult)
231  {
232  List<Scene> all_scenes = (List<Scene>) pModelResult["hdata"];
233  Dictionary<UUID, USimStatsData> sdatadic = (Dictionary<UUID,USimStatsData>)pModelResult["simstats"];
234 
235  OSDMap allStatsInfo = new OpenMetaverse.StructuredData.OSDMap();
236  foreach (USimStatsData sdata in sdatadic.Values)
237  {
238  OSDMap statsInfo = new OpenMetaverse.StructuredData.OSDMap();
239  string regionName = "unknown";
240  foreach (Scene sn in all_scenes)
241  {
242  if (sn.RegionInfo.RegionID == sdata.RegionId)
243  {
244  regionName = sn.RegionInfo.RegionName;
245  break;
246  }
247  }
248  statsInfo.Add("region", new OSDString(regionName));
249  statsInfo.Add("timeDilation", new OSDString(sdata.TimeDilation.ToString()));
250  statsInfo.Add("simFPS", new OSDString(sdata.SimFps.ToString()));
251  statsInfo.Add("physicsFPS", new OSDString(sdata.PhysicsFps.ToString()));
252  statsInfo.Add("agentUpdates", new OSDString(sdata.AgentUpdates.ToString()));
253  statsInfo.Add("rootAgents", new OSDString(sdata.RootAgents.ToString()));
254  statsInfo.Add("childAgents", new OSDString(sdata.ChildAgents.ToString()));
255  statsInfo.Add("totalPrims", new OSDString(sdata.TotalPrims.ToString()));
256  statsInfo.Add("activePrims", new OSDString(sdata.ActivePrims.ToString()));
257  statsInfo.Add("activeScripts", new OSDString(sdata.ActiveScripts.ToString()));
258  statsInfo.Add("scriptLinesPerSec", new OSDString(sdata.ScriptLinesPerSecond.ToString()));
259  statsInfo.Add("totalFrameTime", new OSDString(sdata.TotalFrameTime.ToString()));
260  statsInfo.Add("agentFrameTime", new OSDString(sdata.AgentFrameTime.ToString()));
261  statsInfo.Add("physicsFrameTime", new OSDString(sdata.PhysicsFrameTime.ToString()));
262  statsInfo.Add("otherFrameTime", new OSDString(sdata.OtherFrameTime.ToString()));
263  statsInfo.Add("outPacketsPerSec", new OSDString(sdata.OutPacketsPerSecond.ToString()));
264  statsInfo.Add("inPacketsPerSec", new OSDString(sdata.InPacketsPerSecond.ToString()));
265  statsInfo.Add("unackedByptes", new OSDString(sdata.UnackedBytes.ToString()));
266  statsInfo.Add("pendingDownloads", new OSDString(sdata.PendingDownloads.ToString()));
267  statsInfo.Add("pendingUploads", new OSDString(sdata.PendingUploads.ToString()));
268 
269  allStatsInfo.Add(regionName, statsInfo);
270  }
271  return allStatsInfo.ToString();
272  }
273 
274  #endregion
275  }
276 }
Hashtable ProcessModel(Hashtable pParams)
Definition: SimStatsAJAX.cs:50
OpenMetaverse.StructuredData.OSDMap OSDMap
string RenderView(Hashtable pModelResult)
Definition: SimStatsAJAX.cs:60
string RenderJson(Hashtable pModelResult)
Return stat information for all regions in the sim. Returns data of the form: