Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
DefaultProbe |
|
| 1.3846153846153846;1.385 |
1 | /* ========================================== | |
2 | * JperfProbe : Java Performance Probes | |
3 | * ========================================== | |
4 | * | |
5 | * Project Info: http://jperfprobe.sourceforge.net/ | |
6 | * Project Lead: Tor-Erik Larsen (http://sourceforge.net/users/uptime62) | |
7 | * | |
8 | * (C) Copyright 2005, by Tor-Erik Larsen and Contributors. | |
9 | * | |
10 | * This library is free software; you can redistribute it and/or modify it | |
11 | * under the terms of the GNU Lesser General Public License as published by | |
12 | * the Free Software Foundation; either version 2.1 of the License, or | |
13 | * (at your option) any later version. | |
14 | * | |
15 | * This library is distributed in the hope that it will be useful, but | |
16 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
17 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
18 | * License for more details. | |
19 | * | |
20 | * You should have received a copy of the GNU Lesser General Public License | |
21 | * along with this library; if not, write to the Free Software Foundation, Inc., | |
22 | * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. | |
23 | */ | |
24 | ||
25 | package net.sf.jperfprobe; | |
26 | ||
27 | import org.slf4j.*; | |
28 | ||
29 | ||
30 | /** | |
31 | * DefaultProbe implements a Probe. It is possible to start and stop a probe | |
32 | * The probe is identified by a name. The probe uses nano seconds for measuring time. | |
33 | */ | |
34 | public class DefaultProbe implements Probe { | |
35 | 2461 | final Logger log = LoggerFactory.getLogger(DefaultProbe.class); |
36 | ||
37 | // indicates if the probe is running. | |
38 | private boolean running; | |
39 | ||
40 | // start time stamp of this probe. | |
41 | private long startTime; | |
42 | ||
43 | // elapsed time in probe. | |
44 | private long timeElapsed; | |
45 | ||
46 | // name of probe. | |
47 | private final String name; | |
48 | ||
49 | // probe enable flag. | |
50 | 2461 | private boolean enabled = true; |
51 | ||
52 | // name of the initiating thread | |
53 | //private String threadName; | |
54 | ||
55 | // how to get the time | |
56 | 2461 | private Time time = TimeFactory.getTime(); |
57 | ||
58 | /** | |
59 | * Constructor of probe | |
60 | * | |
61 | * @param name name of probe | |
62 | */ | |
63 | 2461 | public DefaultProbe(String name) { |
64 | 2461 | this.name = name; |
65 | //this.threadName = Thread.currentThread().getName(); | |
66 | 2461 | } |
67 | ||
68 | protected DefaultProbe(String name, Time tim) { | |
69 | 2454 | this(name); |
70 | 2454 | this.time = tim; |
71 | 2454 | } |
72 | ||
73 | /** | |
74 | * Get elapsed time for this probe in nanos. | |
75 | * | |
76 | * @return elapsed time | |
77 | */ | |
78 | public long getElapsed() { | |
79 | 9828 | return timeElapsed; |
80 | } | |
81 | ||
82 | /** | |
83 | * Start the probe. | |
84 | * The probe will only start if it is enabled and not running. | |
85 | * Nothing will happen if it is running. | |
86 | */ | |
87 | public void start() { | |
88 | 9832 | if (enabled && !running) { |
89 | 6634 | startTime = time.getNanos(); |
90 | 6634 | running = true; |
91 | } | |
92 | 9832 | } |
93 | ||
94 | /** | |
95 | * Stop the probe. It is not poosible to stop the probe if it is disabled | |
96 | */ | |
97 | public void stop() { | |
98 | 9829 | if (enabled) { |
99 | 9828 | long ti = this.time.getNanos() - startTime; |
100 | 9828 | if (running && ti > 0) { |
101 | // make sure timeelapsed > 0 | |
102 | 5525 | timeElapsed = ti; |
103 | 5525 | running = false; |
104 | } | |
105 | } | |
106 | 9829 | } |
107 | ||
108 | /** | |
109 | * Is the probe enabled. | |
110 | * | |
111 | * @return enabled flag | |
112 | */ | |
113 | public boolean isEnabled() { | |
114 | 29 | return enabled; |
115 | } | |
116 | ||
117 | /** | |
118 | * Enable the probe. | |
119 | */ | |
120 | public void enable() { | |
121 | 8 | enabled = true; |
122 | 8 | } |
123 | ||
124 | /** | |
125 | * Disable the probe. | |
126 | */ | |
127 | public void disable() { | |
128 | 15 | enabled = false; |
129 | 15 | running = false; |
130 | 15 | } |
131 | ||
132 | /** | |
133 | * Is the probe running (by start). | |
134 | * | |
135 | * @return running flag | |
136 | */ | |
137 | public boolean isRunning() { | |
138 | 12 | return running; |
139 | } | |
140 | ||
141 | public String getName() { | |
142 | 2005 | return name; |
143 | } | |
144 | ||
145 | public Time getTime() { | |
146 | 2 | return time; |
147 | } | |
148 | ||
149 | public void setTime(Time time) { | |
150 | 1 | this.time = time; |
151 | 1 | } |
152 | ||
153 | /** | |
154 | * Get all info from probe to string | |
155 | * | |
156 | * @return string with all probe info | |
157 | */ | |
158 | @Override | |
159 | public String toString() { | |
160 | 0 | return "probe name=" + name + ", elapsed:" + timeElapsed + " , running:" + running; |
161 | } | |
162 | } |