common/status_code_util.h (74 lines of code) (raw):
#pragma once
#include <map>
#include <string>
namespace swss
{
enum class StatusCode
{
SWSS_RC_SUCCESS,
SWSS_RC_INVALID_PARAM,
SWSS_RC_DEADLINE_EXCEEDED,
SWSS_RC_UNAVAIL,
SWSS_RC_NOT_FOUND,
SWSS_RC_NO_MEMORY,
SWSS_RC_EXISTS,
SWSS_RC_PERMISSION_DENIED,
SWSS_RC_FULL,
SWSS_RC_IN_USE,
SWSS_RC_INTERNAL,
SWSS_RC_UNIMPLEMENTED,
SWSS_RC_NOT_EXECUTED,
SWSS_RC_FAILED_PRECONDITION,
SWSS_RC_UNKNOWN,
};
static const std::map<StatusCode, std::string> statusCodeMapping = {
{StatusCode::SWSS_RC_SUCCESS, "SWSS_RC_SUCCESS"},
{StatusCode::SWSS_RC_INVALID_PARAM, "SWSS_RC_INVALID_PARAM"},
{StatusCode::SWSS_RC_DEADLINE_EXCEEDED, "SWSS_RC_DEADLINE_EXCEEDED"},
{StatusCode::SWSS_RC_UNAVAIL, "SWSS_RC_UNAVAIL"},
{StatusCode::SWSS_RC_NOT_FOUND, "SWSS_RC_NOT_FOUND"},
{StatusCode::SWSS_RC_NO_MEMORY, "SWSS_RC_NO_MEMORY"},
{StatusCode::SWSS_RC_EXISTS, "SWSS_RC_EXISTS"},
{StatusCode::SWSS_RC_PERMISSION_DENIED, "SWSS_RC_PERMISSION_DENIED"},
{StatusCode::SWSS_RC_FULL, "SWSS_RC_FULL"},
{StatusCode::SWSS_RC_IN_USE, "SWSS_RC_IN_USE"},
{StatusCode::SWSS_RC_INTERNAL, "SWSS_RC_INTERNAL"},
{StatusCode::SWSS_RC_UNIMPLEMENTED, "SWSS_RC_UNIMPLEMENTED"},
{StatusCode::SWSS_RC_NOT_EXECUTED, "SWSS_RC_NOT_EXECUTED"},
{StatusCode::SWSS_RC_FAILED_PRECONDITION, "SWSS_RC_FAILED_PRECONDITION"},
{StatusCode::SWSS_RC_UNKNOWN, "SWSS_RC_UNKNOWN"},
};
static const std::map<std::string, StatusCode> StatusCodeLookup = {
{"SWSS_RC_SUCCESS", StatusCode::SWSS_RC_SUCCESS},
{"SWSS_RC_INVALID_PARAM", StatusCode::SWSS_RC_INVALID_PARAM},
{"SWSS_RC_DEADLINE_EXCEEDED", StatusCode::SWSS_RC_DEADLINE_EXCEEDED},
{"SWSS_RC_UNAVAIL", StatusCode::SWSS_RC_UNAVAIL},
{"SWSS_RC_NOT_FOUND", StatusCode::SWSS_RC_NOT_FOUND},
{"SWSS_RC_NO_MEMORY", StatusCode::SWSS_RC_NO_MEMORY},
{"SWSS_RC_EXISTS", StatusCode::SWSS_RC_EXISTS},
{"SWSS_RC_PERMISSION_DENIED", StatusCode::SWSS_RC_PERMISSION_DENIED},
{"SWSS_RC_FULL", StatusCode::SWSS_RC_FULL},
{"SWSS_RC_IN_USE", StatusCode::SWSS_RC_IN_USE},
{"SWSS_RC_INTERNAL", StatusCode::SWSS_RC_INTERNAL},
{"SWSS_RC_UNIMPLEMENTED", StatusCode::SWSS_RC_UNIMPLEMENTED},
{"SWSS_RC_NOT_EXECUTED", StatusCode::SWSS_RC_NOT_EXECUTED},
{"SWSS_RC_FAILED_PRECONDITION", StatusCode::SWSS_RC_FAILED_PRECONDITION},
{"SWSS_RC_UNKNOWN", StatusCode::SWSS_RC_UNKNOWN},
};
static inline std::string statusCodeToStr(const StatusCode &status)
{
if (statusCodeMapping.find(status) == statusCodeMapping.end())
{
return "SWSS_RC_UNKNOWN";
}
return statusCodeMapping.at(status);
}
static inline StatusCode strToStatusCode(const std::string &status)
{
if (StatusCodeLookup.find(status) == StatusCodeLookup.end())
{
return StatusCode::SWSS_RC_UNKNOWN;
}
return StatusCodeLookup.at(status);
}
} // namespace swss