package edu.cmu.graphchi;
/**
* Represents a scheduler object. GraphChi currently supports selective
* scheduling: all vertices 'scheduled' are updated when the
* next opportunity arises.
* Scheduler can be accessed via GraphChiContext.
* @see edu.cmu.graphchi.engine.BitsetScheduler for an example implementation
* @author akyrola
*/
public interface Scheduler {
/**
* Ask a vertex to be updated.
* @param vertexId
*/
public void addTask(int vertexId);
public void removeTasks(int from, int to);
public void addAllTasks();
public boolean hasTasks();
public boolean isScheduled(int i);
public void removeAllTasks();
void scheduleOutNeighbors(ChiVertex vertex);
void scheduleInNeighbors(ChiVertex vertex);
}