package act.metric; /*- * #%L * ACT Framework * %% * Copyright (C) 2014 - 2017 ActFramework * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import org.osgl.logging.Logger; /** * Defines a Metric plugin */ public interface MetricPlugin { /** * Returns a {@link Metric} instance by name * * The plugin shall check if a {@link org.osgl.logging.Logger} get by name `metric.$name` * is {@link Logger#isTraceEnabled() trace enabled} to return the real Metric instance, otherwise * then it shall return the {@link Metric#NULL_METRIC the do-nothing metric instance} * * @param name the name (could be the name of the metric root hierarchy) * @return the metric instance corresponding to the name */ Metric metric(String name); /** * Returns the default {@link Metric} instance * <p> * Note the plugin shall always return the same instance with this method call * </p> * @return the metric instance */ Metric metric(); /** * Returns a {@link MetricStore} instance. * * Note the plugin shall always returns the same instance * * @return the metric store instance */ MetricStore metricStore(); /** * Enable/Disable metric data sync to persistent store * @param sync `true` if enable sync data, `false` otherwise */ void enableDataSync(boolean sync); }