static public RICustomData GetCollection(IEnumerable enumerator, ObjectScope scope) { RICustomDataFieldIdType fType = RICustomDataFieldIdType.Integer; RICustomDataColumnJustificationType sIndexJustification = RICustomDataColumnJustificationType.Right; string sIndex = "Index"; if (enumerator is IDictionary) { sIndex = "Key"; fType = RICustomDataFieldIdType.String; sIndexJustification = RICustomDataColumnJustificationType.Left; } List <RICustomDataColumn> columns = new List <RICustomDataColumn>(); columns.Add(new RICustomDataColumn(sIndex, fType, null, null, sIndexJustification)); columns.Add(new RICustomDataColumn("Value")); columns.Add(new RICustomDataColumn("Type")); RICustomData cData = new RICustomData(enumerator.GetType().FullName, columns, true, false); cData.AllowSort = true; cData.HasDetails = scope != ObjectScope.None; using (var pool = FastFormatterPool.Pool.Container()) { if (enumerator is IDictionary) { IDictionary collection = (IDictionary)enumerator; foreach (Object key in collection.Keys) { Object value = collection[key]; RICustomDataRow row = cData.AddRow(key != null ? key.ToString() : null, value != null ? value.ToString() : null, value != null ? value.GetType().FullName : null); if (!cData.HasDetails || value == null) { continue; } row.SetExtraData(pool.Instance, ObjectBuilder.BuildObjectPropertyMap(value, scope)); } } else { Int32 index = 0; foreach (Object value in enumerator) { RICustomDataRow row = cData.AddRow(index++, value != null ? value.ToString() : null, value != null ? value.GetType().FullName : null); if (!cData.HasDetails || value == null) { continue; } row.SetExtraData(pool.Instance, ObjectBuilder.BuildObjectPropertyMap(value, scope)); } } } return(cData); }
static public RICustomData GetLoadedAssemblies() { List <RICustomDataColumn> columns = new List <RICustomDataColumn>(); columns.Add(new RICustomDataColumn("Assembly")); columns.Add(new RICustomDataColumn("Version")); columns.Add(new RICustomDataColumn("Culture")); columns.Add(new RICustomDataColumn("Strong Named")); columns.Add(new RICustomDataColumn("GAC")); RICustomData cData = new RICustomData(string.Format("{0}: Loaded Assemblies", AppDomain.CurrentDomain.FriendlyName), columns, true, false) { AllowSort = true }; string tmpStr = string.Empty; foreach (Assembly assem in AppDomain.CurrentDomain.GetAssemblies()) { RICustomDataRow row = cData.AddRow(); Int32 j = 0; string[] fns1 = assem.FullName.Split(','); foreach (string s1 in fns1) { if (j != 0) { string[] fns2 = s1.Split('='); tmpStr = fns2[1].Trim(); switch (j) { case 1: row.AddField(tmpStr); break; case 2: row.AddField(tmpStr); break; case 3: row.AddField((tmpStr != "null").ToString()); break; } } else { row.AddField(s1.Trim()); } j++; } row.AddField(assem.GlobalAssemblyCache.ToString()); } return(cData); }
static public RICustomData GetLoadedProcesses() { List <RICustomDataColumn> columns = new List <RICustomDataColumn>(); columns.Add(new RICustomDataColumn("Image Name")); columns.Add(new RICustomDataColumn("Mem Usage", RICustomDataFieldIdType.Integer, "{0:N0} KB", null, RICustomDataColumnJustificationType.Right)); columns.Add(new RICustomDataColumn("Virtual Mem Usage", RICustomDataFieldIdType.Integer, "{0:N0} KB", null, RICustomDataColumnJustificationType.Right)); columns.Add(new RICustomDataColumn("Peak Mem Usage", RICustomDataFieldIdType.Integer, "{0:N0} KB", null, RICustomDataColumnJustificationType.Right)); columns.Add(new RICustomDataColumn("Thread Count", RICustomDataFieldIdType.Integer, "{0:N0}", null, RICustomDataColumnJustificationType.Right)); RICustomData cData = new RICustomData("Loaded Processes", columns, true, false) { AllowSort = true }; List <Process> processes = new List <Process>(Process.GetProcesses()); processes.Sort(CompareProcess); foreach (Process p in processes) { using (p) { if (p.ProcessName.Trim().ToLower() == "idle") { continue; } RICustomDataRow row = cData.AddRow(); row.AddField(p.ProcessName); row.AddField((Int32)(p.WorkingSet64 / 1024)); row.AddField((Int32)(p.PrivateMemorySize64 / 1024)); row.AddField((Int32)(p.PeakWorkingSet64 / 1024)); row.AddField((Int32)p.Threads.Count); } } processes.Clear(); processes.Capacity = 0; return(cData); }
static private void AppendCustomDataChild(StringBuilder sb, RICustomData cData, List <RICustomDataElement> children, Int32 indent) { foreach (RICustomDataElement ce in children) { if (ce.CustomDataType == RICustomDataElementType.Category) { String catFmt = String.Format("{{0,{0}}}{{1}}{{2}}", indent); RICustomDataCategory cat = (RICustomDataCategory)ce; sb.AppendFormat(catFmt, " ", String.Format("[{0}]", cat.Caption), Environment.NewLine); AppendCustomDataChild(sb, cData, cat.Children, indent + 3); } else // must be Row { String sIndentFmt = String.Format("{{0,{0}}}{{1}}", indent); RICustomDataRow row = (RICustomDataRow)ce; Int32 maxFieldsAllowed = row.Fields.Count < cData.Columns.Length ? row.Fields.Count : cData.Columns.Length; String separator = cData.IsPropertyGrid ? " " : " | "; for (Int32 i = 0; i < maxFieldsAllowed; i++) { if (i > 0) { sb.AppendFormat("{0}{1}", separator, row.Fields[i]); } else { sb.AppendFormat(sIndentFmt, " ", row.Fields[i]); if (cData.IsPropertyGrid) { sb.Append(":"); } } } sb.AppendFormat(Environment.NewLine); } } }