/** \file
 *
 *  Contains the StopMission class declaration.
 *
 *  StopMission.h should only be included by StopMission.cpp
 *  Other classes should include StopMissionIF.h
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef StopMission_H_
#define StopMission_H_

#include "component/Behavior.h"

/**
 *  Contains the StopMission Command.  Stops
 *  the current Mission from running.
 *
 *  /todo eliminate this command
 *
 *  StopMission.h should only be included by StopMission.cpp
 *  Other classes should include StopMissionIF.h
 *
 *  \ingroup modules_guidance
 */
class StopMission : public Behavior
{
public:

    StopMission( const Str& prefix, const Module* module );

    virtual ~StopMission();

    /// Initialize function
    void initialize( void );

    /// The actual "payload" of the component
    void run();

    /// Otherwise returns true
    bool runIfUnsatisfied();

    bool isSatisfied();

    /// Uninit function
    void uninitialize( void );

    /// Mission Component factory interface
    static Behavior* CreateBehavior( const Str& prefix, const Module* module );

protected:

    bool stopMission_;

};

#endif /*StopMission_H_*/
