1/*
2 * Copyright (c) 2004, 2010, 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
26package sun.jvmstat.monitor;
27
28/**
29 * Interface provided by Instrumentation Monitoring Objects.
30 *
31 * @author Brian Doherty
32 * @since 1.5
33 */
34public interface Monitor  {
35
36    /**
37     * Returns the name of this instrumentation object.
38     *
39     * @return String - the name assigned to this instrumentation monitoring
40     *                  object
41     */
42    String getName();
43
44    /**
45     * Returns the base name of this instrumentation object.
46     * The base name is the component of the name following the last
47     * "." character in the name.
48     *
49     * @return String - the base name of the name assigned to this
50     *                  instrumentation monitoring object.
51     */
52    String getBaseName();
53
54    /**
55     * Returns the Units for this instrumentation monitoring object.
56     *
57     * @return Units - the units of measure attribute
58     */
59    Units getUnits();
60
61    /**
62     * Returns the Variability for this instrumentation object.
63     *
64     *@return Variability - the variability attribute
65     */
66    Variability getVariability();
67
68    /**
69     * Test if the instrumentation object is a vector type.
70     *
71     * @return boolean - true if this instrumentation object is a vector type,
72     *                   false otherwise.
73     */
74    boolean isVector();
75
76    /**
77     * Return the length of the vector.
78     * @return int - the length of the vector or zero if this instrumentation
79     *               object is a scalar type.
80     */
81    int getVectorLength();
82
83    /**
84     * Test if the instrumentation object is supported.
85     */
86    boolean isSupported();
87
88    /**
89     * Return an Object that encapsulates this instrumentation object's
90     * current data value.
91     */
92    Object getValue();
93}
94