/// <summary>Retrieves all the records managed by this MetricsContext.</summary> /// <remarks> /// Retrieves all the records managed by this MetricsContext. /// Useful for monitoring systems that are polling-based. /// </remarks> /// <returns>A non-null collection of all monitoring records.</returns> public override IDictionary <string, ICollection <OutputRecord> > GetAllRecords() { lock (this) { IDictionary <string, ICollection <OutputRecord> > @out = new SortedDictionary <string , ICollection <OutputRecord> >(); foreach (KeyValuePair <string, AbstractMetricsContext.RecordMap> recordEntry in bufferedData) { AbstractMetricsContext.RecordMap recordMap = recordEntry.Value; lock (recordMap) { IList <OutputRecord> records = new AList <OutputRecord>(); ICollection <KeyValuePair <AbstractMetricsContext.TagMap, AbstractMetricsContext.MetricMap > > entrySet = recordMap; foreach (KeyValuePair <AbstractMetricsContext.TagMap, AbstractMetricsContext.MetricMap > entry in entrySet) { OutputRecord outRec = new OutputRecord(entry.Key, entry.Value); records.AddItem(outRec); } @out[recordEntry.Key] = records; } } return(@out); } }
public virtual void TestCopy() { AbstractMetricsContext.TagMap tags = new AbstractMetricsContext.TagMap(); tags["tagkey"] = "tagval"; AbstractMetricsContext.MetricMap metrics = new AbstractMetricsContext.MetricMap(); metrics["metrickey"] = 123.4; OutputRecord r = new OutputRecord(tags, metrics); Assert.Equal(tags, r.GetTagsCopy()); NUnit.Framework.Assert.AreNotSame(tags, r.GetTagsCopy()); Assert.Equal(metrics, r.GetMetricsCopy()); NUnit.Framework.Assert.AreNotSame(metrics, r.GetMetricsCopy()); }
protected internal override void EmitRecord(string contextName, string recordName , OutputRecord outRec) { foreach (MetricsContext ctxt in subctxt) { try { ((AbstractMetricsContext)ctxt).EmitRecord(contextName, recordName, outRec); if (contextName == null || recordName == null || outRec == null) { throw new IOException(contextName + ":" + recordName + ":" + outRec); } } catch (IOException e) { Log.Warn("emitRecord failed: " + ctxt.GetContextName(), e); } } }
/// <summary>Emits the records.</summary> /// <exception cref="System.IO.IOException"/> private void EmitRecords() { lock (this) { foreach (KeyValuePair <string, AbstractMetricsContext.RecordMap> recordEntry in bufferedData) { AbstractMetricsContext.RecordMap recordMap = recordEntry.Value; lock (recordMap) { ICollection <KeyValuePair <AbstractMetricsContext.TagMap, AbstractMetricsContext.MetricMap > > entrySet = recordMap; foreach (KeyValuePair <AbstractMetricsContext.TagMap, AbstractMetricsContext.MetricMap > entry in entrySet) { OutputRecord outRec = new OutputRecord(entry.Key, entry.Value); EmitRecord(contextName, recordEntry.Key, outRec); } } } Flush(); } }
protected internal override void EmitRecord(string contextName, string recordName , OutputRecord outRec) { }
/// <summary>Sends a record to the metrics system.</summary> /// <exception cref="System.IO.IOException"/> protected internal abstract void EmitRecord(string contextName, string recordName , OutputRecord outRec);