1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  *
26  *ident	"%Z%%M%	%I%	%E% SMI"
27  */
28 
29 package com.sun.solaris.domain.pools;
30 
31 import java.util.Map;
32 
33 import com.sun.solaris.service.pools.Configuration;
34 import com.sun.solaris.service.pools.Resource;
35 import com.sun.solaris.service.pools.PoolsException;
36 
37 /**
38  * A monitoring class. The user of this interface can retrieve
39  * monitoring information related to the configuration which is
40  * examined.
41  */
42 
43 public interface Monitor {
44 	/**
45 	 * Initialize the monitoring object using details from the
46 	 * supplied configuration.
47 	 *
48 	 * @param conf The configuration to be monitored.
49 	 * @throws PoolsException If the initialize fails.
50 	 * @throws StaleMonitorException If the resource monitors
51 	 * cannot be accessed.
52 	 */
initialize(Configuration conf)53 	public void initialize(Configuration conf) throws PoolsException,
54 	    StaleMonitorException;
55 
56 	/**
57 	 * Return the next sample.
58 	 *
59 	 * This call is a blocking call. The sample will only be
60 	 * returned after pausing the invoking thread for the "sample
61 	 * interval".
62 	 *
63 	 * @throws StaleMonitorException If the sample fails.
64 	 * @throws PoolsException If there is an error manipulating the
65 	 * pools configuration.
66 	 * @throws InterruptedException If the thread is interrupted
67 	 * while waiting for the sampling time to arrive.  The caller
68 	 * may wish to check other conditions before possibly
69 	 * reinitiating the sample.
70 	 */
getNext()71 	public void getNext() throws StaleMonitorException, PoolsException,
72 	    InterruptedException;
73 
74 	/**
75 	 * Return the number of samples taken.  This is the number of
76 	 * successful calls to <code>getNext()</code>.
77 	 */
getSampleCount()78 	public int getSampleCount();
79 
80 	/**
81 	 * Return the utilization for supplied resource.
82 	 *
83 	 * @param res The resource to be examined.
84 	 *
85 	 * @throws StaleMonitorException if the resource cannot be accessed.
86 	 */
getUtilization(Resource res)87 	public double getUtilization(Resource res) throws StaleMonitorException;
isValid()88 	public boolean isValid();
get(Resource res)89 	public ResourceMonitor get(Resource res) throws StaleMonitorException;
90 }
91 
92 /**
93  * Indicates that a monitor must be re-initialized. This can occur
94  * for a number of reasons, including:
95  *
96  * <ul>
97  * <li><p>
98  * Resources created, modified, destroyed whilst sampling
99  * </ul>
100  */
101 class StaleMonitorException extends Exception {
102 }
103