public object Get(double frame, string key) { // Get a value from logframe in particular frame and key if (Samples.ContainsKey(frame)) { TelemetrySample sample = Samples[frame]; if (ParameterCache.ContainsKey(key)) { if (sample.Data.ContainsKey(ParameterCache[key].id) && sample.Data[ParameterCache[key].id].ContainsKey(ParameterCache[key].parameter)) { return(sample.Data[ParameterCache[key].id][ParameterCache[key].parameter]); } else { return(0.0); } } else { string[] saKey = key.Split(".".ToCharArray()); string cls = saKey[0]; string obj = saKey[1]; // Look up the instance ID List <int> ids = Instances.GetKeysByValue(cls); if (ids.Count >= 1) { List <int> parameters = Properties[cls].GetKeysByValue(obj); if (parameters.Count >= 1) { ParameterLookUp plk = new ParameterLookUp { id = ids[0], parameter = parameters[0] }; ParameterCache.Add(key, plk); return(sample.Data[ids[0]][parameters[0]]); } else { return(0.0); } } else { return(0.0); } } } else { return(0); } }
private void AddThread(Thread thread, ulong lastSampleTimestamp) { Threads.Add(thread); if (!_stackByThread.ContainsKey(thread.InternalId)) { var rootStackFrame = new StackFrame { FunctionIntId = Function.FakeFunctionId }; _stackByThread.Add(thread.InternalId, new ThreadStackInfo { RootFunctionCall = rootStackFrame, TopFunctionCall = rootStackFrame, LastSampleTimestamp = lastSampleTimestamp }); } if (!Samples.ContainsKey(thread.InternalId)) { Samples.Add(thread.InternalId, new List <Sample>()); } }