/*
* 作成日: 2008/06/12
*/
package jp.ac.fit.asura.nao.strategy.schedulers;
import java.util.Queue;
import jp.ac.fit.asura.nao.strategy.Task;
/**
*
* スケジューラの定義とインターフェイス.
*
* @author $Author: sey $
*
* @version $Id: Scheduler.java 709 2008-11-23 07:40:31Z sey $
*
*/
public abstract class Scheduler extends Task {
/**
* このスケジューラのキューにTaskを追加します.
*
* @param task
*/
abstract public void pushQueue(Task task);
/**
* このスケジューラのキューに入っているタスクをすべて削除します.
*
* すでに実行中のタスクはそのまま継続されます.
*/
abstract public void clearQueue();
/**
* 実行中のタスクを停止し,キューにTaskを割り込ませます.
*/
abstract public void preempt(Task task);
/**
* 実行中のタスクを停止します.
*/
abstract public void abort();
/**
* 現在実行しているタスクを返します.
*
* @return 実行中のTask
*/
abstract public Task getCurrentTask();
/**
* 実行キューを返します.
*
* このキューを変更するべきではありません.
*/
abstract public Queue<Task> getQueue();
/**
* 現在実行しているタスクの残り時間(Time to live)を返します.
*
* @return
*/
abstract public int getTTL();
/**
* 現在実行しているタスクの残り時間を設定します.
*
* @param ttl
* 新しいTTL
*/
abstract public void setTTL(int ttl);
}