1 /** 2 * Copyright (c) 2004-2011 QOS.ch 3 * All rights reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining 6 * a copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, 9 * distribute, sublicense, and/or sell copies of the Software, and to 10 * permit persons to whom the Software is furnished to do so, subject to 11 * the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be 14 * included in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 * 24 */ 25 package org.slf4j.profiler; 26 27 28 /** 29 * This interface sets the methods that must be implemented by 30 * {@link Profiler} and {@link StopWatch} classes. It settles the 31 * general feel of the profiler package. 32 * 33 * @author Ceki Gülcü 34 * 35 */ 36 public interface TimeInstrument { 37 38 /** 39 * All time instruments are named entities. 40 * @return the name of this instrument 41 */ 42 String getName(); 43 44 45 TimeInstrumentStatus getStatus(); 46 47 /** 48 * Start tis time instrument. 49 * 50 * @param name 51 */ 52 void start(String name); 53 54 /** 55 * Stop this time instrument. 56 * 57 * @return this 58 */ 59 TimeInstrument stop(); 60 61 /** 62 * Time elapsed between start and stop, in nanoseconds. 63 * 64 * @return time elapsed in nanoseconds 65 */ 66 long elapsedTime(); 67 68 /** 69 * Print information about this time instrument on the console. 70 */ 71 void print(); 72 73 /** 74 * If the time instrument has an associated logger, then log information about 75 * this time instrument. Note that {@link StopWatch} instances cannot log while {@link Profiler} 76 * instances can. 77 */ 78 void log(); 79 }