Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/sun/management/Sensor.java
38827 views
1
/*
2
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package sun.management;
27
28
import java.lang.management.MemoryUsage;
29
import java.util.Iterator;
30
import java.util.Map;
31
import java.util.HashMap;
32
33
/**
34
* An abstract sensor.
35
*
36
* <p>
37
* A <tt>AbstractSensor</tt> object consists of two attributes:
38
* <ul>
39
* <li><tt>on</tt> is a boolean flag indicating if a sensor is
40
* triggered. This flag will be set or cleared by the
41
* component that owns the sensor.</li>
42
* <li><tt>count</tt> is the total number of times that a sensor
43
* has been triggered.</li>
44
* </ul>
45
*
46
* @author Mandy Chung
47
* @since 1.5
48
*/
49
50
public abstract class Sensor {
51
private Object lock;
52
private String name;
53
private long count;
54
private boolean on;
55
56
/**
57
* Constructs a <tt>Sensor</tt> object.
58
*
59
* @param name The name of this sensor.
60
*/
61
public Sensor(String name) {
62
this.name = name;
63
this.count = 0;
64
this.on = false;
65
this.lock = new Object();
66
}
67
68
/**
69
* Returns the name of this sensor.
70
*
71
* @return the name of this sensor.
72
*/
73
public String getName() {
74
return name;
75
}
76
77
/**
78
* Returns the total number of times that this sensor has been triggered.
79
*
80
* @return the total number of times that this sensor has been triggered.
81
*/
82
public long getCount() {
83
synchronized (lock) {
84
return count;
85
}
86
}
87
88
/**
89
* Tests if this sensor is currently on.
90
*
91
* @return <tt>true</tt> if the sensor is currently on;
92
* <tt>false</tt> otherwise.
93
*
94
*/
95
public boolean isOn() {
96
synchronized (lock) {
97
return on;
98
}
99
}
100
101
/**
102
* Triggers this sensor. This method first sets this sensor on
103
* and increments its sensor count.
104
*/
105
public void trigger() {
106
synchronized (lock) {
107
on = true;
108
count++;
109
}
110
triggerAction();
111
}
112
113
/**
114
* Triggers this sensor. This method sets this sensor on
115
* and increments the count with the input <tt>increment</tt>.
116
*/
117
public void trigger(int increment) {
118
synchronized (lock) {
119
on = true;
120
count += increment;
121
// Do something here...
122
}
123
triggerAction();
124
}
125
126
/**
127
* Triggers this sensor piggybacking a memory usage object.
128
* This method sets this sensor on
129
* and increments the count with the input <tt>increment</tt>.
130
*/
131
public void trigger(int increment, MemoryUsage usage) {
132
synchronized (lock) {
133
on = true;
134
count += increment;
135
// Do something here...
136
}
137
triggerAction(usage);
138
}
139
140
/**
141
* Clears this sensor.
142
*/
143
public void clear() {
144
synchronized (lock) {
145
on = false;
146
}
147
clearAction();
148
}
149
150
151
/**
152
* Clears this sensor
153
* and increments the count with the input <tt>increment</tt>.
154
*/
155
public void clear(int increment) {
156
synchronized (lock) {
157
on = false;
158
count += increment;
159
}
160
clearAction();
161
}
162
163
public String toString() {
164
return "Sensor - " + getName() +
165
(isOn() ? " on " : " off ") +
166
" count = " + getCount();
167
}
168
169
abstract void triggerAction();
170
abstract void triggerAction(MemoryUsage u);
171
abstract void clearAction();
172
}
173
174