/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.toolkit.modules.statistics.api; /** * A category of counters. * * As an example, a counter category could be "Incoming remote message calls", which would then hold individual counters for each available * method. * * @author Robert Mischke * */ public interface CounterCategory { /** * @return true if this category is enabled under the current global filter level; calling code should use this method to avoid costly * preparations for calls that will not be registered anyway (which is the case if this method returns "false") */ boolean isEnabled(); /** * Increments the given counter by one. * * @param key the counter key within the category */ void count(String key); /** * Increments the given counter by an arbitrary value. * * @param key the counter key within the category * @param delta the number to add to the counter; negative values and zero are allowed */ void count(String key, long delta); /** * Convenience method for the common case where occurrences of classes should be counted, with proper handling of null objects. The * counter key is the name of the object's class acquired using {@link Class#getName()}; for null objects, "<null>" is used as the * counter key. * * @param object the object to count */ void countClass(Object object); /** * Convenience method for counting the stacktraces a certain code point was reached by. Equivalent to * <code>count(stacktraceBuilder.getSingleLineStacktrace())</code> using the module's configured default * {@link CompactStacktraceBuilder}. */ void countStacktrace(); }