1 package org.slf4j.profiler;
2
3
4 /**
5 * This interface sets the methods that must be implemented by
6 * {@link Profiler} and {@link StopWatch} classes. It settles the
7 * general feel of the profiler package.
8 *
9 * @author Ceki Gülcü
10 *
11 */
12 public interface TimeInstrument {
13
14 /**
15 * All time instruments are named entities.
16 * @return the name of this instrument
17 */
18 String getName();
19
20
21 TimeInstrumentStatus getStatus();
22
23 /**
24 * Start tis time instrument.
25 *
26 * @param name
27 */
28 void start(String name);
29
30 /**
31 * Stop this time instrument.
32 *
33 * @return this
34 */
35 TimeInstrument stop();
36
37 /**
38 * Time elapsed between start and stop, in nanoseconds.
39 *
40 * @return time elapsed in nanoseconds
41 */
42 long elapsedTime();
43
44 /**
45 * Print information about this time instrument on the console.
46 */
47 void print();
48
49 /**
50 * If the time instrument has an associated logger, then log information about
51 * this time instrument. Note that {@link StopWatch} instances cannot log while {@link Profiler}
52 * instances can.
53 */
54 void log();
55 }