History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/jvmstat/monitor/MonitoredVm.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/jvmstat/monitor/MonitoredVm.java+192−0
@@ -0,0 +1,192 @@
1+/*
2+ * Copyright (c) 2004, 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.jvmstat.monitor;
27+
28+import java.util.List;
29+
30+import sun.jvmstat.monitor.event.VmListener;
31+
32+/**
33+ * Interface for interacting with a monitorable Java Virtual Machine.
34+ * The MonitoredVm interface provides methods for discovery of exported
35+ * instrumentation, for attaching event listeners, and for overall
36+ * maintenance of the connection to the target.
37+ *
38+ * @author Brian Doherty
39+ * @since 1.5
40+ */
41+public interface MonitoredVm {
42+
43+ /**
44+ * Get the VmIdentifier associated with this MonitoredVm
45+ *
46+ * @return VmIdentifier - the fully resolved Vm identifier associated
47+ * with this MonitoredVm.
48+ */
49+ VmIdentifier getVmIdentifier();
50+
51+ /**
52+ * Find a named Instrumentation object.
53+ *
54+ * This method will look for the named instrumentation object in the
55+ * instrumentation exported by this Java Virtual Machine. If an
56+ * instrumentation object with the given name exists, a Monitor interface
57+ * to that object will be return. Otherwise, the method returns
58+ * <tt>null</tt>.
59+ *
60+ * @param name the name of the Instrumentation object to find.
61+ * @return Monitor - the {@link Monitor} object that can be used to
62+ * monitor the the named instrumentation object, or
63+ * <tt>null</tt> if the named object doesn't exist.
64+ * @throws MonitorException Thrown if an error occurs while communicating
65+ * with the target Java Virtual Machine.
66+ */
67+ Monitor findByName(String name) throws MonitorException;
68+
69+ /**
70+ * Find all Instrumentation objects with names matching the given pattern.
71+ *
72+ * This method returns a {@link List} of Monitor objects such that
73+ * the name of each object matches the given pattern.
74+ *
75+ * @param patternString a string containing a pattern as described in
76+ * {@link java.util.regex.Pattern}.
77+ * @return List<Monitor> - a List of {@link Monitor} objects that can be used to
78+ * monitor the instrumentation objects whose names match
79+ * the given pattern. If no instrumentation objects have`
80+ * names matching the given pattern, then an empty List
81+ * is returned.
82+ * @throws MonitorException Thrown if an error occurs while communicating
83+ * with the target Java Virtual Machine.
84+ * @see java.util.regex.Pattern
85+ */
86+ List<Monitor> findByPattern(String patternString) throws MonitorException;
87+
88+ /**
89+ * Detach from target Java Virtual Machine.
90+ *
91+ * After calling this method, updates of the instrumentation data values
92+ * may be halted. All event notifications are halted. Further interactions
93+ * with this object should be avoided.
94+ */
95+ void detach();
96+
97+
98+ /* ---- Methods to support polled MonitoredVm Implementations ---- */
99+
100+ /**
101+ * Set the polling interval to <code>interval</code> milliseconds.
102+ *
103+ * Polling based monitoring implementations need to refresh the
104+ * instrumentation data on a periodic basis. This interface allows
105+ * the interval to override the implementation specific default
106+ * interval.
107+ *
108+ * @param interval the polling interval in milliseconds
109+ */
110+ void setInterval(int interval);
111+
112+ /**
113+ * Get the polling interval.
114+ *
115+ * @return int - the current polling interval in milliseconds.
116+ * @see #setInterval
117+ */
118+ int getInterval();
119+
120+ /**
121+ * Set the last exception encountered while polling this MonitoredVm.
122+ *
123+ * Polling implementations may choose to poll asynchronously. This
124+ * method allows an asynchronous task to communicate any polling related
125+ * exceptions with the application. When an a non-null exception is reported
126+ * through this interface, the MonitoredVm instance is considered to
127+ * be in the <em>errored</em> state.
128+ *
129+ * @param cause the exception to record.
130+ * @see #isErrored
131+ */
132+ void setLastException(Exception cause);
133+
134+ /**
135+ * Get the last exception encountered while polling this MonitoredVm.
136+ *
137+ * Returns the last exception observed by the implementation dependent
138+ * polling task or <tt>null</tt> if no such error has occurred.
139+ *
140+ * @return Exception - the last exception that occurred during polling
141+ * or <tt>null</tt> if no error condition exists.
142+ * @see #isErrored
143+ * @see #setLastException
144+ */
145+ Exception getLastException();
146+
147+ /**
148+ * Clear the last exception.
149+ *
150+ * Calling this method will clear the <em>errored</em> state of this
151+ * MonitoredVm. However, there is no guarantee that clearing the
152+ * the errored state return the asynchronous polling task to an
153+ * operational state.
154+ *
155+ */
156+ void clearLastException();
157+
158+ /**
159+ * Test if this MonitoredVm is in the errored state.
160+ * The errored state exists only if an error was reported with
161+ * call to {@link #setLastException} and only if the parameter to
162+ * that call was non-null and no subsequent calls are made to
163+ * {@link #clearLastException}.
164+ *
165+ * @return boolean - true if the instance has a non-null error condition
166+ * set, false otherwise.
167+ *
168+ * @see #setLastException
169+ * @see #getLastException
170+ */
171+ boolean isErrored();
172+
173+ /**
174+ * Add a VmListener. The given listener is added to the list of
175+ * VmListener objects to be notified of MonitoredVm related events.
176+ *
177+ * @param listener the VmListener to add.
178+ * @throws MonitorException Thrown if any problems occur while attempting
179+ * to add this listener.
180+ */
181+ void addVmListener(VmListener listener) throws MonitorException;
182+
183+ /**
184+ * Remove a VmListener. The given listener is removed from the list of
185+ * VmListener objects to be notified of MonitoredVm related events.
186+ *
187+ * @param listener the VmListener to be removed.
188+ * @throws MonitorException Thrown if any problems occur while attempting
189+ * to remove this listener.
190+ */
191+ void removeVmListener(VmListener listener) throws MonitorException;
192+}