icinga2/base/exception.cpp

57 lines
903 B
C++
Raw Normal View History

#include "i2-base.h"
using namespace icinga;
Exception::Exception(void)
{
}
Exception::Exception(const string& message)
{
2012-04-22 16:45:31 +02:00
SetMessage(message);
}
2012-04-22 16:45:31 +02:00
string Exception::GetMessage(void) const
{
2012-04-22 16:45:31 +02:00
return m_Message;
}
2012-04-22 16:45:31 +02:00
void Exception::SetMessage(string message)
{
2012-04-22 16:45:31 +02:00
m_Message = message;
}
#ifdef _WIN32
string Win32Exception::FormatErrorCode(int code)
{
char *message;
string result = "Unknown error.";
DWORD rc = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM, NULL, code, 0, (char *)&message,
0, NULL);
if (rc != 0) {
result = string(message);
LocalFree(message);
}
return result;
}
2012-04-22 16:45:31 +02:00
#endif /* _WIN32 */
string PosixException::FormatErrorCode(int code)
{
return strerror(code);
}
string OpenSSLException::FormatErrorCode(int code)
{
2012-04-26 12:55:48 +02:00
const char *message = ERR_error_string(code, NULL);
if (message == NULL)
message = "Unknown error.";
return message;
}