/** * 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.List; import abs.backend.java.observing.TaskSchedulerView; import abs.backend.java.scheduling.SimpleTaskScheduler.TaskInfo; public class RecordingSchedulerStrategy implements TaskSchedulingStrategy { private final TaskSchedulingStrategy schedulingStrat; public RecordingSchedulerStrategy(TaskSchedulingStrategy s) { this.schedulingStrat = s; } @Override public TaskInfo schedule(TaskScheduler scheduler, List<TaskInfo> scheduableTasks) { int cogId = scheduler.getCOG().getID(); TaskInfo choosenTask = schedulingStrat.schedule(scheduler, scheduableTasks); long taskId = choosenTask.id; String suff = scheduableTasks.size() == 1 ? " (NO CHOICE)" : ""; System.out.println("COG " + cogId + " (" + scheduler.getCOG().getInitialClass().getName() + "): Scheduled task " + taskId + " from {" + tasksToStringList(cogId, scheduableTasks) + "}" + suff); return choosenTask; } private String tasksToStringList(int cogid, List<TaskInfo> scheduableTasks) { StringBuilder res = new StringBuilder(); boolean first = true; for (TaskInfo info : scheduableTasks) { if (first) first = false; else res.append(", "); res.append(info.id); } return res.toString(); } }