/** * 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.scheduling; import java.util.ArrayList; import java.util.List; import abs.backend.java.lib.runtime.ABSGuard; import abs.backend.java.observing.TaskSchedulerObserver; import abs.backend.java.observing.TaskObserver; import abs.backend.java.observing.TaskSchedulerView; import abs.backend.java.observing.TaskView; public abstract class AbstractTaskSchedulerView implements TaskSchedulerView { private List<TaskSchedulerObserver> observers; @Override public synchronized void registerTaskSchedulerObserver(TaskSchedulerObserver listener) { getObservers().add(listener); } private synchronized List<TaskSchedulerObserver> getObservers() { if (observers == null) { observers = new ArrayList<TaskSchedulerObserver>(1); } return observers; } public void taskResumed(TaskView runningTask, ABSGuard g) { for (TaskSchedulerObserver l : getObserverCopy()) { l.taskResumed(runningTask, g.getView()); } } public void taskSuspended(TaskView runningTask, ABSGuard g) { for (TaskSchedulerObserver l : getObserverCopy()) { l.taskSuspended(runningTask, g.getView()); } } public void taskAdded(TaskView view) { for (TaskSchedulerObserver l : getObserverCopy()) { l.taskCreated(view); } } public void taskReady(TaskView view) { for (TaskSchedulerObserver l : getObserverCopy()) { l.taskReady(view); } } public synchronized List<TaskSchedulerObserver> getObserverCopy() { return new ArrayList<TaskSchedulerObserver>(observers); } }