package net.i2p.router;
/*
 * free (adj.): unencumbered; not under the control of others
 * Written by jrandom in 2003 and released into the public domain 
 * with no warranty of any kind, either expressed or implied.  
 * It probably won't make your computer catch on fire, or eat 
 * your children, but it might.  Use at your own risk.
 *
 */


/**
 * Defines an executable task
 *
 * For use by the router only. Not to be used by applications or plugins.
 */
public interface Job {
    /**
     * Descriptive name of the task
     */
    public String getName();
    /** unique id */
    public long getJobId();
    /**
     * Timing criteria for the task
     */
    public JobTiming getTiming();
    /**
     * Actually perform the task.  This call blocks until the Job is complete.
     */
    public void runJob();
    
    public Exception getAddedBy();
    
    /** 
     * the router is extremely overloaded, so this job has been dropped.  if for
     * some reason the job *must* do some cleanup / requeueing of other tasks, it
     * should do so here.
     *
     */
    public void dropped();
}
