/// <summary> /// Initializes a new instance of the <see cref="ProfilerMonitorViewModel" /> class. /// </summary> /// <param name="settings">The settings.</param> public ProfilerMonitorViewModel(IPluginSettings settings) { _dispatcher = Dispatcher.CurrentDispatcher; PluginSettings = settings; ClearCommand = new DelegateCommand(() => _dispatcher.Invoke(Clear)); ProfilerTraceModel = new ProfilerTraceModel(_dispatcher); }
private void Deserialize <T>(MemoryStream stream, string channel) { var obj = Serializer.Deserialize <ChannelMessage <T> >(stream); if (obj != null) { var jss = new JavaScriptSerializer( ); jss.MaxJsonLength = int.MaxValue; jss.RecursionLimit = int.MaxValue; var jsonObject = jss.Deserialize <dynamic>(obj.Message.ToString( )) as IDictionary <string, object>; if (jsonObject != null) { var root = new ProfilerTrace(jsonObject, "web.png"); _dispatcher.Invoke(() => ProfilerTraceModel.Add(root, Guid.Empty)); var child = jsonObject["Root"] as IDictionary <string, object>; Parse(child, root.Id); } } }
private void Parse(IDictionary <string, object> obj, Guid parent) { var trace = new ProfilerTrace(obj); _dispatcher.Invoke(() => ProfilerTraceModel.Add(trace, parent)); object children; if (obj.TryGetValue("Children", out children)) { if (children != null) { var childrenItems = children as object[]; foreach (var childItem in childrenItems) { var childDictionary = childItem as IDictionary <string, object>; Parse(childDictionary, trace.Id); } } } object customTimings; if (obj.TryGetValue("CustomTimings", out customTimings)) { if (customTimings != null) { var timingDictionary = customTimings as IDictionary <string, object>; if (timingDictionary != null) { object sqlTimings; if (timingDictionary.TryGetValue("sql", out sqlTimings)) { if (sqlTimings != null) { var sqlArray = sqlTimings as object[]; if (sqlArray != null) { foreach (var sqlObj in sqlArray) { var sql = sqlObj as IDictionary <string, object>; var sqlTrace = new SqlProfilerTrace(sql); _dispatcher.Invoke(() => ProfilerTraceModel.Add(sqlTrace, parent)); } } } } object redisTimings; if (timingDictionary.TryGetValue("redis", out redisTimings)) { if (redisTimings != null) { var redisArray = redisTimings as object[]; if (redisArray != null) { foreach (var redisObj in redisArray) { var redis = redisObj as IDictionary <string, object>; var sqlTrace = new RedisProfilerTrace(redis); _dispatcher.Invoke(() => ProfilerTraceModel.Add(sqlTrace, parent)); } } } } } } } }
/// <summary> /// Clears this instance. /// </summary> private void Clear( ) { ProfilerTraceModel.Clear( ); }