Some metrics are missing the '/sec' suffix. This fix first tries to add
the counter without the '/sec' and if fails, try again with it. If the second call fails, throw an exception.This issue must be addressed at the java level (and not C code), since the counter names must be translated before to support i18n native OS locals. Please also note, the C code (at Pdh.c), tries to do the same, but at this level we cannot use the translation mechanism the Java level offers, hence this fix won't handle non-English i18n locals.
This commit is contained in:
parent
f12b8e32d3
commit
494ed4ed3e
|
@ -286,6 +286,24 @@ public class Pdh extends Win32 {
|
|||
return trans.toString();
|
||||
}
|
||||
|
||||
private long addPdhCounter(String path, boolean format) throws Win32Exception {
|
||||
long counter;
|
||||
/*
|
||||
* Some metrics are missing the '/sec' suffix. This flow,
|
||||
* first tries to add the counter without the '/sec' and
|
||||
* if fails, try again with it. If the seconds call fails,
|
||||
* throw an exception.This issue must be addressed
|
||||
* at the java level (and not C code), since the counter
|
||||
* names must be translated before.
|
||||
*/
|
||||
try {
|
||||
counter = pdhAddCounter(this.query, translate(path));
|
||||
} catch (Win32Exception e) {
|
||||
counter = pdhAddCounter(this.query, translate(path + "/sec"));
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
private double getValue(String path, boolean format)
|
||||
throws Win32Exception {
|
||||
|
||||
|
@ -293,8 +311,8 @@ public class Pdh extends Win32 {
|
|||
pdhConnectMachine(this.hostname);
|
||||
}
|
||||
|
||||
long counter =
|
||||
pdhAddCounter(this.query, translate(path));
|
||||
long counter = addPdhCounter(path, format);
|
||||
|
||||
try {
|
||||
return pdhGetValue(this.query, counter, format);
|
||||
} finally {
|
||||
|
|
Loading…
Reference in New Issue