/**
* Copyright (c) 2009-2011, The HATS Consortium. All rights reserved.
* This file is licensed under the terms of the Modified BSD License.
*/
package abs.backend.java.observing;
import java.io.PrintStream;
import java.util.List;
import abs.backend.java.lib.types.ABSValue;
import abs.backend.java.utils.StringUtil;
/**
* A simple observer that prints observed events to the command line
*
* @author Jan Schäfer
*
*/
public class ConsoleObserver extends RegistratingObserver implements FutObserver, TaskObserver {
PrintStream s = System.out;
private void show(String string) {
s.println("[Event] "+string);
}
@Override
public void systemStarted() {
show("System started");
}
@Override
public void newCOGCreated(COGView cog, ObjectView o) {
super.newCOGCreated(cog, o);
show("COG["+cog.getID()+"] created");
show(o.getClassName()+"["+o.getID()+"] created in COG["+cog.getID()+"]");
}
@Override
public void objectCreated(ObjectView o) {
super.objectCreated(o);
show(objectString(o)+" created in COG["+o.getCOG().getID()+"]");
}
@Override
public void methodCalled(ObjectView object, String method, List<ABSValue> args) {
show("Method called: "+method+"("+StringUtil.iterableToString(args, ",")+")");
}
String objectString(ObjectView o) {
return o.getClassName()+"["+o.getID()+"]";
}
@Override
public void taskCreated(TaskView task) {
show("Task["+task.getID()+"] created ("
+objectString(task.getTarget())+
"!"+task.getMethodName()+
"("+StringUtil.iterableToString(task.getArgs(), ",")+
")"+
")");
task.registerTaskListener(this);
task.getFuture().registerFutObserver(this);
}
@Override
public void systemFinished() {
show("System finished");
}
@Override
public void onResolved(FutView fut, ABSValue value) {
show("Future["+fut.getID()+"] resolved with value '"+value+"'");
}
@Override
public void taskStarted(TaskView task) {
show("Task["+task.getID()+"] started");
}
@Override
public void taskFinished(TaskView task) {
show("Task["+task.getID()+"] finished");
}
@Override
public void taskBlockedOnFuture(TaskView task, FutView fut) {
show("Task["+task.getID()+"] blocked on Future["+fut.getID()+"]");
}
@Override
public void taskRunningAfterWaiting(TaskView task, FutView fut) {
show("Task["+task.getID()+"] continued running");
}
@Override
public void taskStep(TaskView task, String fileName, int line) {
// TODO Auto-generated method stub
}
@Override
public void taskDeadlocked(TaskView task) {
show("Task["+task.getID()+"] deadlocked");
}
@Override
public void stackFrameCreated(TaskView task, TaskStackFrameView stackFrame) {
show("Task["+task.getID()+"] called "+stackFrame.getMethod().getClassView().getName()+"."+stackFrame.getMethod().getName());
}
@Override
public void localVariableChanged(TaskStackFrameView stackFrame, String name, ABSValue v) {
// TODO Auto-generated method stub
}
@Override
public void stackFrameRemoved(TaskView task, TaskStackFrameView oldFrame) {
}
}