loolwsd/Util.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ loolwsd/Util.hpp | 19 +++++++++++++++++++ 2 files changed, 71 insertions(+)
New commits: commit 1b6425913d475a2b15866876fe50a9e58a0ea2ce Author: Henry Castro <hcas...@collabora.com> Date: Mon Feb 1 22:23:58 2016 -0400 loolwsd: add LO core exit codes diff --git a/loolwsd/Util.cpp b/loolwsd/Util.cpp index 088620c..a764ff4 100644 --- a/loolwsd/Util.cpp +++ b/loolwsd/Util.cpp @@ -491,6 +491,58 @@ namespace Util sigaction(SIGFPE, &aSigAction, NULL); #endif } + + int getChildStatus(const int nCode) + { + int nRetVal; + + switch (static_cast<const LOOLExitCode>(nCode)) + { + case LOOLExitCode::LOOL_SECOND_OFFICE: + case LOOLExitCode::LOOL_FATAL_ERROR: + case LOOLExitCode::LOOL_CRASH_WITH_RESTART: + case LOOLExitCode::LOOL_NORMAL_RESTART: + case LOOLExitCode::LOOL_EXIT_SOFTWARE: + nRetVal = EXIT_FAILURE; + break; + + case LOOLExitCode::LOOL_NO_ERROR: + nRetVal = EXIT_SUCCESS; + break; + + default: + nRetVal = EXIT_SUCCESS; + break; + } + + return nRetVal; + } + + int getSignalStatus(const int nCode) + { + int nRetVal; + + switch (nCode) + { + case SIGSEGV: + case SIGBUS: + case SIGABRT: + case SIGILL: + case SIGFPE: + case SIGTERM: + case SIGINT: + case SIGQUIT: + case SIGHUP: + nRetVal = EXIT_FAILURE; + break; + + default: + nRetVal = EXIT_SUCCESS; + break; + } + + return nRetVal; + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/loolwsd/Util.hpp b/loolwsd/Util.hpp index b599508..b6f6f08 100644 --- a/loolwsd/Util.hpp +++ b/loolwsd/Util.hpp @@ -25,6 +25,22 @@ // Possible states of LOOL processes. enum class LOOLState { LOOL_RUNNING, LOOL_STOPPING, LOOL_ABNORMAL }; + +enum class LOOLExitCode +{ + LOOL_NO_ERROR = 0, + /* pipe was detected - second office must terminate itself */ + LOOL_SECOND_OFFICE = 1, + /* an uno exception was catched during startup */ + LOOL_FATAL_ERROR = 77, /* Only the low 8 bits are significant 333 % 256 = 77 */ + /* user force automatic restart after crash */ + LOOL_CRASH_WITH_RESTART = 79, + /* the office restarts itself */ + LOOL_NORMAL_RESTART = 81, + /* internal software error */ + LOOL_EXIT_SOFTWARE = 70 +}; + extern volatile LOOLState TerminationState; /// Flag to stop pump loops. @@ -100,6 +116,9 @@ namespace Util /// Trap signals to cleanup and exit the process gracefully. void setTerminationSignals(); void setFatalSignals(); + + int getChildStatus(const int nCode); + int getSignalStatus(const int nCode); }; //TODO: Move to own file. _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits