ExitHandler.h 693 Bytes
Newer Older
1 2 3 4 5 6 7 8 9
#ifndef EXITHANDLER_H
#define EXITHANDLER_H

#include <signal.h>

class ExitHandler {
public:
    enum exit_code_t {
        ec_success = 0,
10
        ec_initing_user_space = 202,  // error or exception while initializing user space
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
    };

private:
    static volatile bool s_shouldExit;
    static volatile int m_signal;
    static volatile exit_code_t g_ec;

    ExitHandler() = delete;

public:
    static void exitHandler( int s );
    static void exitHandler( int s, ExitHandler::exit_code_t ec );
    static bool shouldExit() { return s_shouldExit; }
    static int getSignal() { return m_signal; }
    static exit_code_t requestedExitCode() { return g_ec; }

};

#endif // EXITHANDLER_H