package com.hubspot.singularity;
import java.util.List;
public class SingularityScheduledTasksInfo {
private final int numLateTasks;
private final int numFutureTasks;
private final long maxTaskLag;
private final long timestamp;
private SingularityScheduledTasksInfo(int numLateTasks, int numFutureTasks, long maxTaskLag, long timestamp) {
this.numLateTasks = numLateTasks;
this.numFutureTasks = numFutureTasks;
this.maxTaskLag = maxTaskLag;
this.timestamp = timestamp;
}
public int getNumLateTasks() {
return numLateTasks;
}
public int getNumFutureTasks() {
return numFutureTasks;
}
public long getMaxTaskLag() {
return maxTaskLag;
}
public long getTimestamp() {
return timestamp;
}
public static SingularityScheduledTasksInfo getInfo(List<SingularityPendingTask> pendingTasks, long millisDeltaForLateTasks) {
final long now = System.currentTimeMillis();
int numLateTasks = 0;
int numFutureTasks = 0;
long maxTaskLag = 0;
for (SingularityPendingTask pendingTask : pendingTasks) {
long delta = now - pendingTask.getPendingTaskId().getNextRunAt();
if (delta > millisDeltaForLateTasks) {
numLateTasks++;
} else {
numFutureTasks++;
}
if (delta > maxTaskLag) {
maxTaskLag = delta;
}
}
return new SingularityScheduledTasksInfo(numLateTasks, numFutureTasks, maxTaskLag, now);
}
}