diff --git a/Zutil.jar b/Zutil.jar index d9d0cb1..9d7194d 100644 Binary files a/Zutil.jar and b/Zutil.jar differ diff --git a/src/zutil/osal/app/windows/TypePerf.java b/src/zutil/osal/app/windows/TypePerf.java index 1efbd58..f34c8a1 100644 --- a/src/zutil/osal/app/windows/TypePerf.java +++ b/src/zutil/osal/app/windows/TypePerf.java @@ -22,11 +22,20 @@ package zutil.osal.app.windows; +import zutil.osal.OSAbstractionLayer; +import zutil.parser.CSVParser; +import zutil.parser.DataNode; + +import java.io.IOException; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; + /** * Created by ezivkoc on 2015-07-30. */ public class TypePerf { - // Only available Vista -> + // Only available Vista and later... //https://www.webperformance.com/support/suite/manual/Content/Locating_Server_Metric_Counters.htm /* @@ -53,5 +62,16 @@ public class TypePerf { */ private static final String PERF_NET_PATH = "\\Network Interface(*)\\*"; - //typeperf "path" -SC 0 -y + + + private static DataNode[] execute(String path) throws IOException { + DataNode[] ret = new DataNode[2]; + + String[] output = OSAbstractionLayer.runCommand("typeperf \""+ path +"\" -SC 0 -y"); + CSVParser parser = new CSVParser(new StringReader(output[1] + "\n" + output[2])); + + ret[0] = parser.getHeaders(); + ret[1] = parser.read(); + return ret; + } } diff --git a/src/zutil/parser/CSVParser.java b/src/zutil/parser/CSVParser.java index 1f26be1..ff64391 100644 --- a/src/zutil/parser/CSVParser.java +++ b/src/zutil/parser/CSVParser.java @@ -53,6 +53,14 @@ public class CSVParser extends Parser{ } public DataNode getHeaders() { + if(parseHeader) { + try { + parseHeader = false; + headers = read(); + }catch (IOException e){ + e.printStackTrace(); + } + } return headers; } @@ -67,7 +75,7 @@ public class CSVParser extends Parser{ return new CSVParser(new StringReader(csv)).read(); }catch (IOException e){ e.printStackTrace(); - }catch (NullPointerException e){} + } return null; } @@ -80,9 +88,9 @@ public class CSVParser extends Parser{ */ @Override public DataNode read() throws IOException { + // Make sure we have parsed headers if(parseHeader) { - parseHeader = false; - headers = read(); + getHeaders(); } DataNode data = new DataNode(DataNode.DataType.List);