All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yahoo.jdisc.application.MetricConsumer Maven / Gradle / Ivy

There is a newer version: 8.441.21
Show newest version
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;

import com.google.inject.ProvidedBy;
import com.google.inject.Provider;
import com.yahoo.jdisc.Metric;

import java.util.Map;

/**
 * 

This interface defines the consumer counterpart of the {@link Metric} interface. All Metric objects contain their * own thread local instance of this interface, so most implementations will require a registry of sorts to manage the * aggregation of state across MetricConsumers.

* *

An {@link Application} needs to bind a {@link Provider} of this interface to an implementation, or else all calls * to the Metric objects become no-ops. An implementation will look similar to:

* *
 * private final MyMetricRegistry myMetricRegistry = new MyMetricRegistry();
 * void createContainer() {
 *     ContainerBuilder builder = containerActivator.newContainerBuilder();
 *     builder.guice().install(new MyGuiceModule());
 *     (...)
 * }
 * class MyGuiceModule extends com.google.inject.AbstractModule {
 *     void configure() {
 *         bind(MetricConsumer.class).toProvider(myMetricRegistry);
 *         (...)
 *     }
 * }
 * class MyMetricRegistry implements com.google.inject.Provider<MetricConsumer> {
 *     (...)
 * }
 * 
* * @author Simon Thoresen Hult */ @ProvidedBy(MetricNullProvider.class) public interface MetricConsumer { /** * Consume a call to Metric.set(String, Number, Metric.Context). * * @param key the name of the metric to modify * @param val the value to assign to the named metric * @param ctx the context to further describe this entry */ void set(String key, Number val, Metric.Context ctx); /** * Consume a call to Metric.add(String, Number, Metric.Context). * * @param key the name of the metric to modify * @param val the value to add to the named metric * @param ctx the context to further describe this entry */ void add(String key, Number val, Metric.Context ctx); /** * Creates a Metric.Context object that encapsulates the given properties. The returned Context object * will be passed along every future call to set(String, Number, Metric.Context) and * add(String, Number, Metric.Context) where the properties match those given here. * * @param properties the properties to incorporate in the context * @return the created context */ Metric.Context createContext(Map properties); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy