Home | History | Annotate | Download | only in srm
      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 (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 /*
     22  * Copyright (c) 2001 by Sun Microsystems, Inc.
     23  * All rights reserved.
     24  *
     25  * ProcessDataModel.java
     26  */
     27 
     28 package com.sun.wbem.solarisprovider.srm;
     29 
     30 import javax.wbem.cim.*;
     31 
     32 import java.util.*;
     33 
     34 
     35 /**
     36  * Data model of Process Utilization. It encapsulates a CIM instance of
     37  * a Solaris_ProcessStatisticalInformation class.
     38  * @author Sun Microsystems
     39  */
     40 public class ProcessDataModel extends SRMProviderDataModel
     41 	implements SRMProviderProperties,
     42 	    Solaris_ProcessStatisticalInformationProperties {
     43 
     44     /**
     45      * Object path to the Solaris_Process instance
     46      */
     47     protected CIMObjectPath   opForProc;
     48     int pid;
     49 
     50 
     51     public ProcessDataModel() {
     52     	super();
     53     }
     54 
     55 
     56     public ProcessDataModel(int pid) {
     57     	this.pid = pid;
     58     }
     59 
     60 
     61     /**
     62      * Get a CIM object path to a Solaris_Process object.
     63      * @returns object path to the Solaris_Process instance.
     64      */
     65     public CIMObjectPath getCIMObjectPathForProc() {
     66         if (opForProc == null) {
     67 
     68             opForProc = new CIMObjectPath(SOLARIS_PROCESS);
     69 	    opForProc.setNameSpace(NAMESPACE);
     70 
     71             Vector properties = new Vector(5);
     72 
     73             properties.add(
     74 		new CIMProperty(CSCREATIONCLASSNAME,
     75 		  new CIMValue(SOLARIS_COMPUTERSYSTEM)));
     76 
     77 	    properties.add(
     78 		new CIMProperty(CSNAME,
     79 		  new CIMValue(csName)));
     80 
     81 	    properties.add(
     82 		new CIMProperty(OSCREATIONCLASSNAME,
     83 		  new CIMValue(SOLARIS_OPERATINGSYSTEM)));
     84 
     85 	    properties.add(
     86 		new CIMProperty(OSNAME,
     87 		  new CIMValue(osName)));
     88 
     89 	    properties.add(
     90 		new CIMProperty(HANDLE,
     91 		  new CIMValue(Long.toString(pid))));
     92 
     93 	    opForProc.setKeys(properties);
     94         }
     95         return opForProc;
     96     }
     97 
     98 
     99     public String toString() {
    100 
    101     	return "Name    " + pid + "\n" + super.toString();
    102     }
    103 
    104 
    105     protected void setOpPropertiesVector() {
    106 
    107         opProperties.add(
    108 	    	new CIMProperty(CSCREATIONCLASSNAME,
    109 		new CIMValue(SOLARIS_COMPUTERSYSTEM)));
    110 
    111         opProperties.add(
    112 		new CIMProperty(CSNAME,
    113 		new CIMValue(csName)));
    114 
    115         opProperties.add(
    116 	    	new CIMProperty(OSCREATIONCLASSNAME,
    117 	  	new CIMValue(SOLARIS_OPERATINGSYSTEM)));
    118 
    119         opProperties.add(
    120 	    	new CIMProperty(OSNAME,
    121 		new CIMValue(osName)));
    122 
    123         opProperties.add(
    124 	    	new CIMProperty(NAME,
    125 		new CIMValue(Long.toString(pid))));
    126     }
    127 
    128 
    129     protected void setCIMInstance(boolean newInstance) {
    130 
    131         setStrProp(newInstance,
    132 		  	SYSTEMCREATIONCLASSNAME,
    133 		  	SOLARIS_COMPUTERSYSTEM);
    134 
    135         setStrProp(newInstance,
    136 			  SYSTEMNAME,
    137 			  csName);
    138 
    139         setStrProp(newInstance,
    140 			  CREATIONCLASSNAME,
    141 			  SOLARIS_PROCESSSTATISTICALINFORMATION);
    142 
    143         setStrProp(newInstance,
    144 			  CAPTION,
    145 			  "");
    146 
    147         setStrProp(newInstance,
    148 			  DESCRIPTION,
    149 			  "");
    150 
    151         setStrProp(newInstance,
    152 			  NAME,
    153 			  Long.toString(pid));
    154     }
    155 
    156 
    157     protected void initKeyValTable() {
    158     	keyValTab = new LinkedHashMap(30);
    159 
    160 	keyValTab.put(WAITCPUTIME_KEY,
    161 	    new SetReal64Prop(WAITCPUTIME));
    162 	keyValTab.put(USERMODETIME_KEY,
    163 	    new SetReal64Prop(USERMODETIME));
    164 	keyValTab.put(SYSTEMMODETIME_KEY,
    165 	    new SetReal64Prop(SYSTEMMODETIME));
    166 	keyValTab.put(SYSTEMTRAPTIME_KEY,
    167 	    new SetReal64Prop(SYSTEMTRAPTIME));
    168 	keyValTab.put(TEXTPAGEFAULTSLEEPTIME_KEY,
    169 	    new SetReal64Prop(TEXTPAGEFAULTSLEEPTIME));
    170 	keyValTab.put(DATAPAGEFAULTSLEEPTIME_KEY,
    171 	    new SetReal64Prop(DATAPAGEFAULTSLEEPTIME));
    172 	keyValTab.put(SYSTEMPAGEFAULTSLEEPTIME_KEY,
    173 	    new SetReal64Prop(SYSTEMPAGEFAULTSLEEPTIME));
    174 	keyValTab.put(USERLOCKWAITSLEEPTIME_KEY,
    175 	    new SetReal64Prop(USERLOCKWAITSLEEPTIME));
    176 	keyValTab.put(OTHERSLEEPTIME_KEY,
    177 	    new SetReal64Prop(OTHERSLEEPTIME));
    178 	keyValTab.put(STOPPEDTIME_KEY,
    179 	    new SetReal64Prop(STOPPEDTIME));
    180 	keyValTab.put(MINORPAGEFAULTS_KEY,
    181 	    new SetUI64Prop(MINORPAGEFAULTS));
    182 	keyValTab.put(MAJORPAGEFAULTS_KEY,
    183 	    new SetUI64Prop(MAJORPAGEFAULTS));
    184 	keyValTab.put(SWAPOPERATIONS_KEY,
    185 	    new SetUI64Prop(SWAPOPERATIONS));
    186 	keyValTab.put(BLOCKSREAD_KEY,
    187 	    new SetUI64Prop(BLOCKSREAD));
    188 	keyValTab.put(BLOCKSWRITTEN_KEY,
    189 	    new SetUI64Prop(BLOCKSWRITTEN));
    190 	keyValTab.put(MESSAGESSENT_KEY,
    191 	    new SetUI64Prop(MESSAGESSENT));
    192 	keyValTab.put(MESSAGESRECEIVED_KEY,
    193 	    new SetUI64Prop(MESSAGESRECEIVED));
    194 	keyValTab.put(SIGNALSRECEIVED_KEY,
    195 	    new SetUI64Prop(SIGNALSRECEIVED));
    196 	keyValTab.put(VOLUNTARYCONTEXTSWITCHES_KEY,
    197 	    new SetUI64Prop(VOLUNTARYCONTEXTSWITCHES));
    198 	keyValTab.put(INVOLUNTARYCONTEXTSWITCHES_KEY,
    199 	    new SetUI64Prop(INVOLUNTARYCONTEXTSWITCHES));
    200 	keyValTab.put(SYSTEMCALLSMADE_KEY,
    201 	    new SetUI64Prop(SYSTEMCALLSMADE));
    202 	keyValTab.put(CHARACTERIOUSAGE_KEY,
    203 	    new SetUI64Prop(CHARACTERIOUSAGE));
    204 	keyValTab.put(PROCESSHEAPSIZE_KEY,
    205 	    new SetUI64Prop(PROCESSHEAPSIZE));
    206 	keyValTab.put(PROCESSVMSIZE_KEY,
    207 	    new SetUI64Prop(PROCESSVMSIZE));
    208 	keyValTab.put(PROCESSRESIDENTSETSIZE_KEY,
    209 	    new SetUI64Prop(PROCESSRESIDENTSETSIZE));
    210 	keyValTab.put(PERCENTCPUTIME_KEY,
    211 	    new SetReal32Prop(PERCENTCPUTIME));
    212 	keyValTab.put(PERCENTMEMORYSIZE_KEY,
    213 	    new SetReal32Prop(PERCENTMEMORYSIZE));
    214 	keyValTab.put(USERSYSTEMMODETIME_KEY,
    215 	    new SetUI64Prop(USERSYSTEMMODETIME));
    216 	keyValTab.put(NUMTHREADS_KEY,
    217 	    new SetUI64Prop(NUMTHREADS));
    218 	keyValTab.put(TIMESTAMP_KEY,
    219 	    new SetUI64Prop(TIMESTAMP));
    220     }
    221 }
    222