# include "pantasks.h"

int controller      PROTO((int, char **));
int task	    PROTO((int, char **));
int task_host	    PROTO((int, char **));
int task_nmax	    PROTO((int, char **));
int task_npending   PROTO((int, char **));
int task_active	    PROTO((int, char **));
int task_trange	    PROTO((int, char **));
int task_macros	    PROTO((int, char **));
int task_command    PROTO((int, char **));
int task_options    PROTO((int, char **));
int task_periods    PROTO((int, char **));
int task_stdout     PROTO((int, char **));
int task_stderr     PROTO((int, char **));
int run             PROTO((int, char **));
int stop            PROTO((int, char **));
int halt            PROTO((int, char **));
int flush_jobs      PROTO((int, char **));
int pulse           PROTO((int, char **));
int showtask        PROTO((int, char **));
int status_sys      PROTO((int, char **));
int kill_job        PROTO((int, char **));
int delete_job      PROTO((int, char **));
int verbose         PROTO((int, char **));
int version         PROTO((int, char **));
int ipptool2book    PROTO((int, char **));

static Command cmds[] = {  
  {"active",     task_active,  	"set the active state of a task"},
  {"command",    task_command, 	"define executed command for a task"},
  {"controller", controller,   	"controller commands"},
  {"delete",     delete_job,   	"delete job"},
  {"halt",       halt,         	"halt the scheduler (no job harvesting)"},
  {"host",       task_host,    	"define host machine for a task"},
  {"ipptool2book", ipptool2book, "convert queue with ipptool output to book"},
  {"kill",       kill_job,     	"kill job"},
  {"nmax",       task_nmax,    	"define maximum number of jobs for a task"},
  {"npending",   task_npending, "define maximum number of outstanding jobs for a task"},
  {"options",    task_options, 	"define optional variables associated with the job task"},
  {"periods",    task_periods, 	"define time scales for a task"},
  {"pulse",      pulse,        	"set the scheduler update period"},
  {"run",        run,          	"run the scheduler"},
  {"flush",      flush_jobs,    "flush all jobs from the queue"},
  {"showtask",   showtask,   	"list a task"},
  {"status",     status_sys,   	"get system or task status"},
  {"stderr",     task_stderr,  	"define a file for the job stderr dump"},
  {"stdout",     task_stdout,  	"define a file for the job stdout dump"},
  {"stop",       stop,         	"stop the scheduler (continue job harvesting)"},
  {"task",       task,         	"define a schedulable task"},
  {"task.exec",  task_macros,  	"define pre-exec macro for a task"},
  {"task.exit",  task_macros,  	"define exit macros for a task"},
  {"trange",     task_trange,  	"define valid/invalid time periods for a task"},
  {"verbose",    verbose,      	"set/toggle verbose mode"},
  {"version",    version,      	"show version information"},
}; 

void InitPantasks () {
  
  int i;

  InitTasks ();
  InitJobs ();
  InitJobIDs ();

  for (i = 0; i < sizeof (cmds) / sizeof (Command); i++) {
    AddCommand (&cmds[i]);
  }
}
