package com.datascience.scheduler;
import com.datascience.core.base.IData;
import com.datascience.core.base.LObject;
import com.datascience.core.base.Project;
import com.datascience.core.base.Worker;
/**
* @Author: konrad
*/
public interface IScheduler<T> {
void update();
void update(LObject<T> object);
LObject<T> nextObject();
LObject<T> nextObject(Worker worker);
void setUpQueue(IPriorityCalculator<T> calculator);
void setSchedulerForWorker(ISchedulerForWorker schedulerForWorker);
<V, W> void registerOnProject(Project<T, ?, V, W> project);
IData<T> getData();
IPriorityCalculator<T> getCalculator();
String getId();
}