package net.juniper.contrail.watchdog;
import java.util.Date;
import java.util.Map;
import net.juniper.contrail.sandesh.DetailLevel;
import net.juniper.contrail.sandesh.SandeshObjectList;
public class TaskWatchDogResp {
private SandeshObjectList<TaskInfo> tasks;
public TaskWatchDogResp(TaskWatchDogReq req) {
tasks = new SandeshObjectList<TaskInfo>(TaskInfo.class,
new ComparatorTaskInfo());
for (Map.Entry<Runnable, MonitoredTaskRecord> entry:
TaskWatchDog.getMonitoredTasks().entrySet()) {
MonitoredTaskRecord rec = entry.getValue();
TaskInfo taskInfo = new TaskInfo();
taskInfo.setName(rec.name);
taskInfo.setBlocked(rec.blocked);
taskInfo.setStartTime(new Date(rec.startTime).toString());
taskInfo.setTimeout(Long.toString(rec.timeout) + " " + rec.unit);
if (rec.stackTrace != null) {
SandeshObjectList<String> stack = taskInfo.getStackTrace();
for (int i = 0; i < rec.stackTrace.length; i++) {
stack.add(rec.stackTrace[i].toString());
}
}
tasks.add(taskInfo);
}
}
public void writeObject(StringBuilder s) {
s.append("<TaskWatchDogResp type=\"sandesh\">");
tasks.writeObject(s, "TaskInfo", DetailLevel.REGULAR, 1);
s.append("</TaskWatchDogResp>");
}
}