/// <summary> /// Records instrumentation datum /// </summary> public void Record(Datum datum) { if (Status != ControlStatus.Active) { return; } if (datum == null) { return; } if (Overflown) { return; } var t = datum.GetType(); var srcBucketed = m_TypeBucketed.GetOrAdd(t, (tp) => new SrcBucketedData()); if (srcBucketed.DefaultDatum == null) { srcBucketed.DefaultDatum = datum; } var bag = srcBucketed.GetOrAdd(datum.Source, (src) => new DatumBag()); bag.Add(datum); Interlocked.Increment(ref m_RecordCount); }
private Message toMsg(Datum datum) { var msg = new Message { Type = MessageType.PerformanceInstrumentation, Topic = CoreConsts.INSTRUMENTATIONSVC_TOPIC, From = datum.GetType().FullName, Text = datum.ToString() }; return(msg); }
private Message toMsg(Datum datum) { var msg = new Message { Type = MessageType.PerformanceInstrumentation, Topic = CoreConsts.INSTRUMENTATIONSVC_TOPIC, From = datum.GetType().FullName, Text = datum.ToString() }; return msg; }
private void write() { foreach (var tvp in m_TypeBucketed) { if (!App.Available) { break; } foreach (var svp in tvp.Value) { if (!App.Available) { break; } var bag = svp.Value; Datum datum = null; if (bag.TryPeek(out datum)) { Datum aggregated = null; try { var lst = new List <Datum>(); Datum elm; while (bag.TryTake(out elm)) { lst.Add(elm); Interlocked.Decrement(ref m_RecordCount); } aggregated = datum.Aggregate(lst); } catch (Exception error) { var et = error.ToMessageWithType(); log(MessageType.Error, string.Format("{0}.Aggregate(IEnumerable<Datum>) leaked {1}", datum.GetType().FullName, et), et); } try { if (aggregated != null) { m_Provider.Write(aggregated); } } catch (Exception error) { var et = error.ToMessageWithType(); log(MessageType.CatastrophicError, string.Format("{0}.Write(datum) leaked {1}", m_Provider.GetType().FullName, et), et); } if (aggregated != null) { bufferResult(aggregated); } } //if } } }