#ifndef _SUPERVISORSERVER_H
#define _SUPERVISORSERVER_H

#include "SupervisorIF_SK.h"
#include "SupervisorCommand.h"
#include "SupervisorOutput.h"

class SupervisorServer : public SupervisorIF_SK {

 public:

    SupervisorServer();
    virtual ~SupervisorServer();

    void setMission(SupervisorIF::PlanName mission);
    void setMission(SupervisorIF::PlanName mission,
		    SupervisorIF::PlanName abortplan);
    void setFlags(Boolean simulated,
		  Boolean realTailCone);

    void setDriverCommand(SupervisorIF::DriverName dname, Boolean turnOn);

    void startMission();

    void abortMission();
    void killMission();

    void stopSupervisor();

    void missionCompleted();
    Boolean isMissionRunning();

    void reloadConfig();

    void deviceFailed( char * devName );

    void getCurrentLogDirectoryName( char *directoryName);
    
    short getCycleCount();

 protected:


 private:

    SupervisorCommand *_command;
    SupervisorOutput *_output;
    SupervisorOutput::Data *_data;

    virtual int spawnAuxTasks() { return 0; };
};

#endif
