/** * Creates a new {@link Timer}. * * @param tickThread background thread for updating the rates * @param durationUnit the scale unit for this timer's duration metrics * @param rateUnit the scale unit for this timer's rate metrics * @param clock the clock used to calculate duration */ Timer(ScheduledExecutorService tickThread, TimeUnit durationUnit, TimeUnit rateUnit, Clock clock) { this.durationUnit = durationUnit; this.rateUnit = rateUnit; this.meter = new Meter(tickThread, "calls", rateUnit, clock); this.clock = clock; clear(); }
@Override public void processTimer(MetricName name, Timer timer, Context context) throws Exception { final JsonGenerator json = context.json; json.writeStartObject(); { json.writeFieldName("duration"); json.writeStartObject(); { json.writeStringField("unit", timer.durationUnit().toString().toLowerCase()); writeSummarizable(timer, json); writeSampling(timer, json); if (context.showFullSamples) { json.writeObjectField("values", timer.getSnapshot().getValues()); } } json.writeEndObject(); json.writeFieldName("rate"); json.writeStartObject(); { writeMeteredFields(timer, json); } json.writeEndObject(); } json.writeEndObject(); if (clear) timer.clear(); } }
@Override public void processTimer(MetricName name, Timer timer, Context context) throws Exception { final JsonGenerator json = context.json; json.writeStartObject(); { json.writeFieldName("duration"); json.writeStartObject(); { json.writeStringField("unit", timer.durationUnit().toString().toLowerCase()); writeSummarizable(timer, json); writeSampling(timer, json); if (context.showFullSamples) { json.writeObjectField("values", timer.getSnapshot().getValues()); } } json.writeEndObject(); json.writeFieldName("rate"); json.writeStartObject(); { writeMeteredFields(timer, json); } json.writeEndObject(); } json.writeEndObject(); if (clear) timer.clear(); } }
@Override public void processTimer(MetricName name, Timer timer, Void context) throws Exception { MetricName samplingName, rateName; if (name instanceof TaggedMetricName) { TaggedMetricName taggedMetricName = (TaggedMetricName) name; samplingName = new TaggedMetricName( taggedMetricName.getGroup(), taggedMetricName.getName() + ".duration", taggedMetricName.getTags()); rateName = new TaggedMetricName( taggedMetricName.getGroup(), taggedMetricName.getName() + ".rate", taggedMetricName.getTags()); } else { samplingName = new MetricName(name.getGroup(), name.getType(), name.getName() + ".duration"); rateName = new MetricName(name.getGroup(), name.getType(), name.getName() + ".rate"); } writeSummarizable(samplingName, timer); writeSampling(samplingName, timer); writeMetered(rateName, timer); if (clear) timer.clear(); }