Search in sources :

Example 1 with Kind

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));
}
Also used : Kind(com.ibm.streams.operator.metrics.Metric.Kind) ArrayList(java.util.ArrayList) Metric(com.ibm.streams.operator.metrics.Metric) LongSupplier(java.util.function.LongSupplier)

Aggregations

Metric (com.ibm.streams.operator.metrics.Metric)1 Kind (com.ibm.streams.operator.metrics.Metric.Kind)1 ArrayList (java.util.ArrayList)1 LongSupplier (java.util.function.LongSupplier)1