use of com.ibm.streams.operator.metrics.Metric.Kind in project streamsx.topology by IBMStreams.
the class FunctionOperatorContext method createCustomMetric.
@Override
public synchronized void createCustomMetric(String name, String description, String kind, LongSupplier value) {
name = requireNonNull(name);
description = requireNonNull(description);
LongSupplier supplier = requireNonNull(value);
Kind ekind = Metric.Kind.valueOf(kind.toUpperCase(Locale.US));
Metric cm;
try {
cm = context.getMetrics().createCustomMetric(name, description, ekind);
} catch (IllegalArgumentException e) {
// the new value supplier.
if (metrics != null) {
synchronized (metrics) {
for (MetricSetter ms : metrics) if (ms.metric.getName().equals(name))
throw e;
}
}
cm = context.getMetrics().getCustomMetric(name);
}
cm.setValue(supplier.getAsLong());
if (metrics == null) {
metrics = Collections.synchronizedList(new ArrayList<>());
metricsGetter = getScheduledExecutorService().scheduleWithFixedDelay(this::updateMetrics, 1, 1, TimeUnit.SECONDS);
}
metrics.add(new MetricSetter(cm, value));
}
Aggregations