/**
* 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 abs.backend.java.lib.types.ABSValue;
public interface TaskObserver {
void taskStarted(TaskView task);
void taskFinished(TaskView task);
void taskBlockedOnFuture(TaskView task, FutView fut);
void taskRunningAfterWaiting(TaskView view, FutView fut);
/**
* Is called when the given task does an execution step.
*
* <b>Important:</b> This method is only called if debugging is turned on,
* i.e., if the program has been started with <code>-Dabs.debug=true</code>
*
* @param task
* the task that executes the step
* @param fileName
* the absolute file name of the executed abs statement
* @param line
* the line of the executed statement
*/
void taskStep(TaskView task, String fileName, int line);
/**
* Called when a deadlock has been detected in a task. Note that if a task
* deadlocked the taskFinished method will *not* be called!
*
* @param task
*/
void taskDeadlocked(TaskView task);
/**
* Called when a new stack frame is created in task.
* This is called for every method that the task invokes synchronously,
* in particular it is also called for the initially called method.
*
* @param task the task where the stack frame has been created
* @param stackFrame the new stack frame
*/
void stackFrameCreated(TaskView task, TaskStackFrameView stackFrame);
/**
* Called when a stack frame is popped.
* @param oldFrame the removed stack frame
*/
void stackFrameRemoved(TaskView task, TaskStackFrameView oldFrame);
/**
* Called when the value of a local variable has changed.
* Note that this is also called for the initial value of a variable
* @param name the name of the variable
* @param v the new value
*/
void localVariableChanged(TaskStackFrameView stackFrame, String name, ABSValue v);
}