call methods directly instead of using SigarInvokerJMX

This commit is contained in:
Doug MacEachern 2006-03-04 07:07:33 +00:00
parent 296af07277
commit fa5bea7363

View File

@ -1,5 +1,7 @@
package net.hyperic.sigar.jmx; package net.hyperic.sigar.jmx;
import net.hyperic.sigar.ProcMem;
import net.hyperic.sigar.ProcTime;
import net.hyperic.sigar.Sigar; import net.hyperic.sigar.Sigar;
import net.hyperic.sigar.SigarException; import net.hyperic.sigar.SigarException;
import net.hyperic.sigar.SigarProxy; import net.hyperic.sigar.SigarProxy;
@ -12,45 +14,38 @@ import net.hyperic.sigar.SigarProxyCache;
public class SigarProcess implements SigarProcessMBean { public class SigarProcess implements SigarProcessMBean {
private Sigar sigar; private Sigar sigarImpl;
private SigarProxy sigarProxy; private SigarProxy sigar;
private static final String procMemName =
SigarInvokerJMX.getObjectName("ProcMem", "$$");
private static final String procTimeName =
SigarInvokerJMX.getObjectName("ProcTime", "$$");
private SigarInvokerJMX procMem, procTime;
public SigarProcess() { public SigarProcess() {
this(null); this.sigarImpl = new Sigar();
} this.sigar = SigarProxyCache.newInstance(sigarImpl);
public SigarProcess(String path) {
sigar = new Sigar();
sigarProxy = SigarProxyCache.newInstance(sigar);
procMem = SigarInvokerJMX.getInstance(sigarProxy,
procMemName);
procTime = SigarInvokerJMX.getInstance(sigarProxy,
procTimeName);
} }
public void close() { public void close() {
this.sigarImpl.close();
} }
private synchronized Long getLongValue(SigarInvokerJMX invoker, String attr) { private ProcMem getMem() {
try { try {
return (Long)invoker.invoke(attr); long pid = this.sigar.getPid();
return this.sigar.getProcMem(pid);
} catch (SigarException e) { } catch (SigarException e) {
return new Long(-1); throw new IllegalArgumentException();
} }
} }
private ProcTime getTime() {
try {
long pid = this.sigar.getPid();
return this.sigar.getProcTime(pid);
} catch (SigarException e) {
throw new IllegalArgumentException();
}
}
public Long getMemSize() { public Long getMemSize() {
return getLongValue(procMem, "Size"); return new Long(getMem().getSize());
} }
/** /**
@ -62,23 +57,23 @@ public class SigarProcess implements SigarProcessMBean {
} }
public Long getMemResident() { public Long getMemResident() {
return getLongValue(procMem, "Resident"); return new Long(getMem().getResident());
} }
public Long getMemShare() { public Long getMemShare() {
return getLongValue(procMem, "Share"); return new Long(getMem().getShare());
} }
public Long getMemPageFaults() { public Long getMemPageFaults() {
return getLongValue(procMem, "PageFaults"); return new Long(getMem().getPageFaults());
} }
public Long getTimeUser() { public Long getTimeUser() {
return getLongValue(procTime, "User"); return new Long(getTime().getUser());
} }
public Long getTimeSys() { public Long getTimeSys() {
return getLongValue(procTime, "Sys"); return new Long(getTime().getSys());
} }
public static void main(String args[]) { public static void main(String args[]) {