public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Move tree code from Log.java to Tree.java. Date: Fri, 07 Dec 2007 22:51:00 -0000 [thread overview] Message-ID: <20071207225140.19042.qmail@sourceware.org> (raw) The branch, master has been updated via 86395789e16a674353533d7b897df0f24ce4d2df (commit) from 36cff033d7840d1968d9952a44486abbe3b26b3f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 86395789e16a674353533d7b897df0f24ce4d2df Author: Andrew Cagney <cagney@redhat.com> Date: Fri Dec 7 17:49:06 2007 -0500 Move tree code from Log.java to Tree.java. frysk-sys/frysk/rsl/ChangeLog 2007-12-07 Andrew Cagney <cagney@redhat.com> * LogOption.java: New file. * Branch.java: New. * Level.mkenum: Add MAX. * Log.java (print(int)): New. (print(long)): New. (print(String)): New. (print(Object)): New. (print(int[])): New. (print(long[])): New. (print(String[])): New. (print(Object[])): New. (fine(...), finest(...)): New. (Log()): Moved to Branch. (children): Moved to Branch. (fine(...), finest(...)): Delete. (get(String,int)): Move to Branch. (complete(String,int,List)): Move to Branch. * package.html: Update. * TestLog.java: Update. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/rsl/{Log.java => Branch.java} | 180 +++-------- frysk-sys/frysk/rsl/ChangeLog | 20 ++ frysk-sys/frysk/rsl/Level.mkenum | 1 + frysk-sys/frysk/rsl/Log.java | 337 ++++++++++++-------- .../frysk/rsl/LogOption.java | 49 ++-- frysk-sys/frysk/rsl/TestLog.java | 35 ++- 6 files changed, 314 insertions(+), 308 deletions(-) copy frysk-sys/frysk/rsl/{Log.java => Branch.java} (57%) copy frysk-core/frysk/event/TestSigChild.java => frysk-sys/frysk/rsl/LogOption.java (70%) First 500 lines of diff: diff --git a/frysk-sys/frysk/rsl/Log.java b/frysk-sys/frysk/rsl/Branch.java similarity index 57% copy from frysk-sys/frysk/rsl/Log.java copy to frysk-sys/frysk/rsl/Branch.java index 964f919..b1856d9 100644 --- a/frysk-sys/frysk/rsl/Log.java +++ b/frysk-sys/frysk/rsl/Branch.java @@ -39,7 +39,6 @@ package frysk.rsl; -import java.io.PrintStream; import java.util.TreeMap; import java.util.Iterator; import java.util.List; @@ -47,99 +46,81 @@ import java.util.List; /** * Generate log information when enabled. */ -public final class Log { +public final class Branch { - private int level; + private final TreeMap children = new TreeMap(); + private final Log[] loggers = new Log[Level.MAX.intValue()]; + private Level level = Level.NONE; private final String path; private final String name; - private Log(String path, String name, Log parent) { + + private Branch(String path, String name) { this.path = path; - this.level = parent.level; this.name = name; } /** - * Create a root logger; package private so that test code can - * create their own root logger. + * Package private for testing. */ - Log() { - this.level = 0; - this.path = ""; - this.name = ""; - } - - public String toString() { - return ("{" + super.toString() - + ",path=" + path - + ",level=" + level - + "}"); + Branch() { + this("<root>", "<root>"); } - /** - * Return the "basename" of the logger. + * The root note; also serves as a single global lock. */ - public final String name() { - return name; - } - /** - * Return the full path of the logger. - */ - public final String path() { - return path; - } + static final Branch root = new Branch(); - private final TreeMap children = new TreeMap(); /** * Set this logger's logging level. */ - public synchronized final Log set(Level level) { - this.level = level.intValue(); - for (Iterator i = children.values().iterator(); i.hasNext(); ) { - Log child = (Log)i.next(); - child.set(level); + public final void set(Level level) { + synchronized (root) { + this.level = level; + for (int i = 0; i < Level.MAX.intValue(); i++) { + if (loggers[i] != null) { + loggers[i].set(i >= level.intValue()); + } + } + for (Iterator i = children.values().iterator(); i.hasNext(); ) { + Branch child = (Branch)i.next(); + child.set(level); + } } - return this; - } - /** - * Return this loggers current logging level. - */ - public final Level level() { - return Level.valueOf(level); } /** * POS starts at -1, then points at "." or the end of the name. * Package private so it can be called from test code. */ - synchronized final Log get(String path, int pos) { - if (pos >= path.length()) - // Reached end if the string. + final Branch get(String path, int pos) { + if (pos >= path.length()) { + // Reached end if the string; find the logger. return this; - // Split - int dot = path.indexOf(".", pos + 1); - if (dot < 0) - dot = path.length(); - String name = path.substring(pos + 1, dot); - Log child = (Log)children.get(name); - if (child == null) { - child = new Log(path.substring(0, dot), name, this); - children.put(name, child); + } else { + // Split + int dot = path.indexOf(".", pos + 1); + if (dot < 0) + dot = path.length(); + String name = path.substring(pos + 1, dot); + Branch child = (Branch)children.get(name); + if (child == null) { + child = new Branch(path.substring(0, dot), name); + children.put(name, child); + } + return child.get(path, dot); } - return child.get(path, dot); } - private static final Log root = new Log(); - /** - * Find the logger by the name KLASS. - */ - public static Log get(String klass) { - return root.get(klass, -1); - } /** - * Find the logger by with KLASS's name. + * Return the requested level. */ - public static Log get(Class klass) { - return root.get(klass.getName(), -1); + final Log get(Level level) { + int l = level.intValue(); + if (loggers[l] == null) { + loggers[l] = new Log(path, name, level, + this.level.compareTo(level) >= 0); + } + return loggers[l]; } /** @@ -153,13 +134,13 @@ public final class Log { * * Package private to allow testing. */ - synchronized final int complete(String incomplete, int pos, - List candidates) { + final int complete(String incomplete, int pos, + List candidates) { int dot = incomplete.indexOf('.', pos + 1); if (dot >= 0) { // More tokens to follow; recursively resolve. String name = incomplete.substring(pos + 1, dot); - Log child = (Log)children.get(name); + Branch child = (Branch)children.get(name); if (child == null) return -1; else @@ -176,7 +157,7 @@ public final class Log { case 0: return -1; case 1: - Log child = (Log)children.get(name); + Branch child = (Branch)children.get(name); if (child != null) { // The final NAME was an exact match for a child; // and there are no other possible completions @@ -201,65 +182,4 @@ public final class Log { } } } - - /** - * Complete the logger path using constructed loggers. Return the - * offset into incomplete where the completions apply, or -1 when - * no completions. - */ - public static int complete(String incomplete, List candidates) { - return root.complete(incomplete, -1, candidates); - } - - // Static? - private static PrintStream out = System.out; - static void set(PrintStream out) { - Log.out = out; - } - - private void prefix() { - out.print(path); - out.print(": "); - } - - private void prefix(Object o) { - out.print(path); - out.print("["); - out.print(o.toString()); - out.print("]: "); - } - - private void postfix() { - out.println(); - } - - // Add at will and on demand. - private void log(String s1) { - prefix(); - out.print(s1); - postfix(); - } - public final void fine(String s1) { - log(s1); - } - public final void finest(String s1) { - log(s1); - } - - // Add at will and on demand. - private void log(Object self, String s1) { - prefix(self); - out.print(s1); - postfix(); - } - public final void fine(Object self, String s1) { - if (level < Level.FINE_) - return; - log(self, s1); - } - public final void finest(Object self, String s1) { - if (level < Level.FINEST_) - return; - log(self, s1); - } } diff --git a/frysk-sys/frysk/rsl/ChangeLog b/frysk-sys/frysk/rsl/ChangeLog index a7f1335..2141ae3 100644 --- a/frysk-sys/frysk/rsl/ChangeLog +++ b/frysk-sys/frysk/rsl/ChangeLog @@ -1,5 +1,25 @@ 2007-12-07 Andrew Cagney <cagney@redhat.com> + * LogOption.java: New file. + * Branch.java: New. + * Level.mkenum: Add MAX. + * Log.java (print(int)): New. + (print(long)): New. + (print(String)): New. + (print(Object)): New. + (print(int[])): New. + (print(long[])): New. + (print(String[])): New. + (print(Object[])): New. + (fine(...), finest(...)): New. + (Log()): Moved to Branch. + (children): Moved to Branch. + (fine(...), finest(...)): Delete. + (get(String,int)): Move to Branch. + (complete(String,int,List)): Move to Branch. + * package.html: Update. + * TestLog.java: Update. + * TestLog.java (testCompletion()): New. (checkComplete(String,int,String[])): New. (testName()): New. diff --git a/frysk-sys/frysk/rsl/Level.mkenum b/frysk-sys/frysk/rsl/Level.mkenum index 5deb651..513ac9d 100644 --- a/frysk-sys/frysk/rsl/Level.mkenum +++ b/frysk-sys/frysk/rsl/Level.mkenum @@ -1,3 +1,4 @@ NONE 0 FINE 1 FINEST 2 +MAX 3 diff --git a/frysk-sys/frysk/rsl/Log.java b/frysk-sys/frysk/rsl/Log.java index 964f919..dfaaeb7 100644 --- a/frysk-sys/frysk/rsl/Log.java +++ b/frysk-sys/frysk/rsl/Log.java @@ -40,8 +40,6 @@ package frysk.rsl; import java.io.PrintStream; -import java.util.TreeMap; -import java.util.Iterator; import java.util.List; /** @@ -49,23 +47,15 @@ import java.util.List; */ public final class Log { - private int level; private final String path; private final String name; - private Log(String path, String name, Log parent) { + private final Level level; + private boolean logging; + Log(String path, String name, Level level, boolean logging) { this.path = path; - this.level = parent.level; this.name = name; - } - - /** - * Create a root logger; package private so that test code can - * create their own root logger. - */ - Log() { - this.level = 0; - this.path = ""; - this.name = ""; + this.level = level; + this.logging = logging; } public String toString() { @@ -78,137 +68,61 @@ public final class Log { /** * Return the "basename" of the logger. */ - public final String name() { + public String name() { return name; } /** * Return the full path of the logger. */ - public final String path() { + public String path() { return path; } - - private final TreeMap children = new TreeMap(); /** - * Set this logger's logging level. + * The level at which this logger starts logging. */ - public synchronized final Log set(Level level) { - this.level = level.intValue(); - for (Iterator i = children.values().iterator(); i.hasNext(); ) { - Log child = (Log)i.next(); - child.set(level); - } - return this; + public Level level() { + return level; } /** - * Return this loggers current logging level. + * Enable logging; package private. */ - public final Level level() { - return Level.valueOf(level); + void set(boolean logging) { + this.logging = logging; } /** - * POS starts at -1, then points at "." or the end of the name. - * Package private so it can be called from test code. + * Return if this logger is currently enabled for logging. */ - synchronized final Log get(String path, int pos) { - if (pos >= path.length()) - // Reached end if the string. - return this; - // Split - int dot = path.indexOf(".", pos + 1); - if (dot < 0) - dot = path.length(); - String name = path.substring(pos + 1, dot); - Log child = (Log)children.get(name); - if (child == null) { - child = new Log(path.substring(0, dot), name, this); - children.put(name, child); - } - return child.get(path, dot); + public boolean logging() { + return logging; } - private static final Log root = new Log(); - /** - * Find the logger by the name KLASS. - */ - public static Log get(String klass) { - return root.get(klass, -1); + public static Branch get(String klass) { + synchronized (Branch.root) { + return Branch.root.get(klass, -1); + } } - /** - * Find the logger by with KLASS's name. - */ - public static Log get(Class klass) { - return root.get(klass.getName(), -1); + public static Log fine(String klass) { + return get(klass).get(Level.FINE); + } + public static Log finest(String klass) { + return get(klass).get(Level.FINEST); } - /** - * Complete the logger. On entry, POS is either -1 or the - * location of the last DOT indicating further name completion is - * needed; or the length indicating that either a "." or " " - * completion is needed. - * - * Returns the offset into INCOMPLETE that the completions apply - * to, or -1. - * - * Package private to allow testing. - */ - synchronized final int complete(String incomplete, int pos, - List candidates) { - int dot = incomplete.indexOf('.', pos + 1); - if (dot >= 0) { - // More tokens to follow; recursively resolve. - String name = incomplete.substring(pos + 1, dot); - Log child = (Log)children.get(name); - if (child == null) - return -1; - else - return child.complete(incomplete, dot, candidates); - } else { - // Final token, scan children for all partial matches. - String name = incomplete.substring(pos + 1); - for (Iterator i = children.keySet().iterator(); i.hasNext(); ) { - String child = (String)i.next(); - if (child.startsWith(name)) - candidates.add(child); - } - switch (candidates.size()) { - case 0: - return -1; - case 1: - Log child = (Log)children.get(name); - if (child != null) { - // The final NAME was an exact match for a child; - // and there are no other possible completions - // (size == 1); change the expansion to either "." - // (have children) or " " (childless). - candidates.remove(0); - synchronized (child) { - if (child.children.size() > 0) { - candidates.add("."); - } else { - candidates.add(" "); - } - return incomplete.length(); - } - } else { - // A single partial completion e.g., <<foo<TAB>>> - // -> <<foobar>>. - return pos + 1; - } - default: - return pos + 1; - } - } + public static Branch get(Class klass) { + return get(klass.getName()); + } + public static Log fine(Class klass) { + return fine(klass.getName()); + } + public static Log finest(Class klass) { + return finest(klass.getName()); } - /** - * Complete the logger path using constructed loggers. Return the - * offset into incomplete where the completions apply, or -1 when - * no completions. - */ public static int complete(String incomplete, List candidates) { - return root.complete(incomplete, -1, candidates); + synchronized (Branch.root) { + return Branch.root.complete(incomplete, -1, candidates); + } hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2007-12-07 22:51 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20071207225140.19042.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).