From 30662b3366c815603d3ed61dc3868e0ea40788e7 Mon Sep 17 00:00:00 2001
From: Igor Murashkin
+ * This tracing mechanism is independent of the method tracing mechanism
+ * offered by {@link Debug#startMethodTracing}. In particular, it enables
+ * tracing of events that occur across multiple processes.
+ *
+ * All traces are written using the APP
tag.
+ *
At this time the vertical bar character '|', newline character '\n', and + * null character '\0' are used internally by the tracing mechanism. If sectionName contains + * these characters they will be replaced with a space character in the trace. + * + * @param sectionName The name of the code section to appear in the trace. This may be at + * most 127 Unicode code units long. + */ + public static void beginSection(String sectionName) { + if (VERBOSE) { + Log.v(TAG, String.format("beginSection[%d] %s", sNestingLevel, sectionName)); + sNestingLevel++; + } + } + + /** + * Writes a trace message to indicate that a given section of code has + * ended. + *
+ * This call must be preceded by a corresponding call to + * {@link #beginSection(String)}. Calling this method will mark the end of + * the most recently begun section of code, so care must be taken to ensure + * that beginSection / endSection pairs are properly nested and called from + * the same thread. + *
+ */ + public static void endSection() { + if (VERBOSE) { + sNestingLevel--; + Log.v(TAG, String.format("endSection[%d]", sNestingLevel)); + } + } + + /** + * Writes a trace message to indicate that a given section of code has + * begun. + * + *Must be followed by a call to {@link #endSectionAsync} using the same + * tag. Unlike {@link #beginSection} and {@link #endSection}, + * asynchronous events do not need to be nested. The name and cookie used to + * begin an event must be used to end it.
+ * + * @param methodName The method name to appear in the trace. + * @param cookie Unique identifier for distinguishing simultaneous events + */ + public static void beginSectionAsync(String methodName, int cookie) { + if (VERBOSE) { + Log.v(TAG, "beginSectionAsync " + methodName + " " + cookie); + } + } + + /** + * Writes a trace message to indicate that the current method has ended. + * Must be called exactly once for each call to {@link #beginSectionAsync} + * using the same tag, name and cookie. + * + * @param methodName The method name to appear in the trace. + * @param cookie Unique identifier for distinguishing simultaneous events + */ + public static void endSectionAsync(String methodName, int cookie) { + if (VERBOSE) { + Log.v(TAG, "endSectionAsync " + methodName + " " + cookie); + } + } +} -- cgit v1.2.3