private static void parseLine(String line, FtraceEntryCallback callback) { Matcher m = sLineWithTgid.matcher(line); if (m.matches()) { callback.onTraceEntry( /*threadname*/ m.group(1), /*pid*/ m.group(3).startsWith("-") ? -1 : Integer.parseInt(m.group(3)), /*tid*/ Integer.parseInt(m.group(2)), /*eventName*/ m.group(6), /*details*/ m.group(7)); return; } m = sLineWithIrqInfo.matcher(line); if (m.matches()) { callback.onTraceEntry( /*threadname*/ m.group(1), /*pid*/ -1, /*tid*/ Integer.parseInt(m.group(2)), /*eventName*/ m.group(5), /*details*/ m.group(6)); return; } m = sLineLegacy.matcher(line); if (m.matches()) { callback.onTraceEntry( /*threadname*/ m.group(1), /*pid*/ -1, /*tid*/ Integer.parseInt(m.group(2)), /*eventName*/ m.group(5), /*details*/ m.group(6)); return; } System.err.println("line doesn't match: " + line); }
private static void parse(Reader reader, FtraceEntryCallback callback) throws Exception { try { BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) { FtraceParser.parseLine(line, callback); } } finally { callback.onFinished(); } }