/** \file
 *
 *  Contains the FailureMode class definition.
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 *
 */

#ifndef FAILUREMODE_H_
#define FAILUREMODE_H_

#include "utils/Str.h"

class FailureMode
{
public:
    /// Components can fail in a variety of ways
    typedef enum
    {
        NONE,
        COMMUNICATIONS,
        DATA,
        HARDWARE,
        OVERCURRENT,
        PERFORMANCE,
        SOFTWARE,
        HEURISTIC,
    } FailType;

    static const Str& ToString( FailureMode::FailType failType );

private:

    const static Str NONE_STR;
    const static Str COMMUNICATIONS_STR;
    const static Str DATA_STR;
    const static Str HARDWARE_STR;
    const static Str HEURISTIC_STR;
    const static Str OVERCURRENT_STR;
    const static Str PERFORMANCE_STR;
    const static Str SOFTWARE_STR;

};

#endif /* FAILUREMODE_H_ */
