better colorization of interpreter logs
[fleet.git] / src / edu / berkeley / fleet / interpreter / Log.java
index f3bc864..914e524 100644 (file)
@@ -1,61 +1,51 @@
 package edu.berkeley.fleet.interpreter;
+import edu.berkeley.sbp.util.ANSI;
 import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.api.Instruction;
 import java.io.*;
 
 public class Log {
 
-    public static boolean ansi_color = true;
-
     public static PrintWriter log = new PrintWriter(new OutputStreamWriter(System.out));
+    public static boolean quiet = false;
 
     public static void print(Object o) {
+        if (log==null || quiet) return;
         try {
             log.print(o);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+        } catch (Exception e) { throw new RuntimeException(e); }
     }
     public static void println() { println(""); }
     public static void println(Object o) {
+        if (log==null || quiet) return;
         try {
             log.println(o);
             log.flush();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static void dispatch(Dispatchable d) {
-        println(green("dispatch: " + indent(d+"", "          ")));
-    }
-    public static void dispatch(Instruction d) {
-        println(green("dispatch: " + indent(d+"", "          ")));
+        } catch (Exception e) { throw new RuntimeException(e); }
     }
 
-    public static void data(String data, BenkoBox source, BenkoBox dest) {
-        println(("    data: ") + indent(purple(data) +
-                                        (source==null ? "" :
-                                         (" : " + source))+(" -> "+purple(""+dest)), "          "));
-    }
-
-    public static void token(BenkoBox source, BenkoBox dest) {
-        println(purple("   token: ") + (source + " -> " + purple(dest+"")));
+    public static void packet(Packet p) {
+        BitVector data = p.getValue();
+        Dock source = p.getSource();
+        Destination dest = p.getDestination();
+        if (dest.getDock().getInstructionDestination()==dest) {
+            if (p.isToken()) {
+                println(ANSI.yellow(ANSI.bold("  torpedo: ")) + (source + " -> " + ANSI.yellow(ANSI.bold(dest+""))));
+            } else {
+                Instruction d = source.getShip().getFleet().decodeInstruction(data, source);
+                println(ANSI.red("dispatch: " + indent(d+"", "          ")));
+            }
+        } else {
+            if (p.isToken()) {
+                println(ANSI.blue(ANSI.bold("   token: ")) + (source + " -> " + ANSI.blue(ANSI.bold(dest+""))));
+            } else {
+                println(indent(ANSI.cyan("    data: "+data) +
+                               (source==null ? "" :
+                                (" : " + source))+(" -> "+ANSI.cyan(""+dest)), "          "));
+            }
+        }
     }
 
-    public static String clreol() { return ""; }
-
-    public static String black(Object o) { if (!ansi_color) return o+""; return o+""; }
-    public static String red(Object o) { if (!ansi_color) return o+""; return "\033[31m"+o+"\033[0m"; }
-    public static String green(Object o) { if (!ansi_color) return o+""; return "\033[32m"+o+"\033[0m"; }
-    public static String yellow(Object o) { if (!ansi_color) return o+""; return "\033[33m"+o+"\033[0m"; }
-    public static String blue(Object o) { if (!ansi_color) return o+""; return "\033[34m"+o+"\033[0m"; }
-    public static String purple(Object o) { if (!ansi_color) return o+""; return "\033[35m"+o+"\033[0m"; }
-    public static String cyan(Object o) { if (!ansi_color) return o+""; return "\033[36m"+o+"\033[0m"; }
-    public static String invert(Object o) { if (!ansi_color) return o+""; return "\033[7m"+o+"\033[0m"; }
-    public static String bold(Object o) { if (!ansi_color) return o+""; return "\033[1m"+o+"\033[0m"; }
-
-    public static void error(Object o) { println(red(o)); }
+    public static void error(Object o) { println(ANSI.red(o)); }
 
     public static String indent(String s, String indent) {
         StringBuffer ret = new StringBuffer();