From afeb5d4917506ced2a1e4098aeb4bc94ae64fc06 Mon Sep 17 00:00:00 2001
From: Dan Lake
Date: Thu, 14 Feb 2013 20:05:42 -0800
Subject: Use SortedDictionary in StatsManager instead of regular Dictionary so
stats will interate and print in a defined order
---
OpenSim/Framework/Monitoring/StatsManager.cs | 40 ++++++++++++++--------------
1 file changed, 20 insertions(+), 20 deletions(-)
(limited to 'OpenSim/Framework/Monitoring/StatsManager.cs')
diff --git a/OpenSim/Framework/Monitoring/StatsManager.cs b/OpenSim/Framework/Monitoring/StatsManager.cs
index 0762b01..910907e 100644
--- a/OpenSim/Framework/Monitoring/StatsManager.cs
+++ b/OpenSim/Framework/Monitoring/StatsManager.cs
@@ -51,8 +51,8 @@ namespace OpenSim.Framework.Monitoring
///
/// Do not add or remove directly from this dictionary.
///
- public static Dictionary>> RegisteredStats
- = new Dictionary>>();
+ public static SortedDictionary>> RegisteredStats
+ = new SortedDictionary>>();
private static AssetStatsCollector assetStats;
private static UserStatsCollector userStats;
@@ -101,7 +101,7 @@ namespace OpenSim.Framework.Monitoring
}
else
{
- Dictionary> category;
+ SortedDictionary> category;
if (!RegisteredStats.TryGetValue(categoryName, out category))
{
con.OutputFormat("No such category as {0}", categoryName);
@@ -120,7 +120,7 @@ namespace OpenSim.Framework.Monitoring
}
private static void OutputCategoryStatsToConsole(
- ICommandConsole con, Dictionary> category)
+ ICommandConsole con, SortedDictionary> category)
{
foreach (var container in category.Values)
{
@@ -160,8 +160,8 @@ namespace OpenSim.Framework.Monitoring
///
public static bool RegisterStat(Stat stat)
{
- Dictionary> category = null, newCategory;
- Dictionary container = null, newContainer;
+ SortedDictionary> category = null, newCategory;
+ SortedDictionary container = null, newContainer;
lock (RegisteredStats)
{
@@ -175,14 +175,14 @@ namespace OpenSim.Framework.Monitoring
// This means that we don't need to lock or copy them on iteration, which will be a much more
// common operation after startup.
if (container != null)
- newContainer = new Dictionary(container);
+ newContainer = new SortedDictionary(container);
else
- newContainer = new Dictionary();
+ newContainer = new SortedDictionary();
if (category != null)
- newCategory = new Dictionary>(category);
+ newCategory = new SortedDictionary>(category);
else
- newCategory = new Dictionary>();
+ newCategory = new SortedDictionary>();
newContainer[stat.ShortName] = stat;
newCategory[stat.Container] = newContainer;
@@ -196,21 +196,21 @@ namespace OpenSim.Framework.Monitoring
/// Deregister a statistic
/// >
///
- ///
public static bool DeregisterStat(Stat stat)
{
- Dictionary> category = null, newCategory;
- Dictionary container = null, newContainer;
+ SortedDictionary> category = null, newCategory;
+ SortedDictionary container = null, newContainer;
lock (RegisteredStats)
{
if (!TryGetStat(stat, out category, out container))
return false;
- newContainer = new Dictionary(container);
+ newContainer = new SortedDictionary(container);
newContainer.Remove(stat.ShortName);
- newCategory = new Dictionary>(category);
+ newCategory = new SortedDictionary>(category);
newCategory.Remove(stat.Container);
newCategory[stat.Container] = newContainer;
@@ -220,15 +220,15 @@ namespace OpenSim.Framework.Monitoring
}
}
- public static bool TryGetStats(string category, out Dictionary> stats)
+ public static bool TryGetStats(string category, out SortedDictionary> stats)
{
return RegisteredStats.TryGetValue(category, out stats);
}
public static bool TryGetStat(
Stat stat,
- out Dictionary> category,
- out Dictionary container)
+ out SortedDictionary> category,
+ out SortedDictionary container)
{
category = null;
container = null;
@@ -252,9 +252,9 @@ namespace OpenSim.Framework.Monitoring
{
lock (RegisteredStats)
{
- foreach (Dictionary> category in RegisteredStats.Values)
+ foreach (SortedDictionary> category in RegisteredStats.Values)
{
- foreach (Dictionary container in category.Values)
+ foreach (SortedDictionary container in category.Values)
{
foreach (Stat stat in container.Values)
{
--
cgit v1.1