From bea5392552b3b6445adf093b97c97512d69db160 Mon Sep 17 00:00:00 2001 From: Vernon Mauery Date: Wed, 3 Apr 2019 09:37:43 -0700 Subject: Add helper functions to simplify error responses Most IPMI commands have some error response. This makes it more intuitive what is happening, changing return ipmi::response(cc::CommandNotAvailable); to return ipmi::responseCommandNotAvailable(); which is parallel to the success respones of: return ipmi::responseSuccess(); Change-Id: Ibbd401c4007a02e91ab4983814b920d6d7f02404 Signed-off-by: Vernon Mauery --- include/ipmid/api-types.hpp | 103 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 100 insertions(+), 3 deletions(-) diff --git a/include/ipmid/api-types.hpp b/include/ipmid/api-types.hpp index c718ff4..b4b70e3 100644 --- a/include/ipmid/api-types.hpp +++ b/include/ipmid/api-types.hpp @@ -445,12 +445,109 @@ static inline auto response(ipmi::Cc cc) template static inline auto responseSuccess(Args&&... args) { - return std::make_tuple(ipmi::ccSuccess, - std::make_optional(std::make_tuple(args...))); + return response(ipmi::ccSuccess, args...); } static inline auto responseSuccess() { - return std::make_tuple(ipmi::ccSuccess, std::nullopt); + return response(ipmi::ccSuccess); +} + +/* helper functions for the various standard error response types */ +static inline auto responseBusy() +{ + return response(ccBusy); +} +static inline auto responseInvalidCommand() +{ + return response(ccInvalidCommand); +} +static inline auto responseInvalidCommandOnLun() +{ + return response(ccInvalidCommandOnLun); +} +static inline auto responseTimeout() +{ + return response(ccTimeout); +} +static inline auto responseOutOfSpace() +{ + return response(ccOutOfSpace); +} +static inline auto responseInvalidReservationId() +{ + return response(ccInvalidReservationId); +} +static inline auto responseReqDataTruncated() +{ + return response(ccReqDataTruncated); +} +static inline auto responseReqDataLenInvalid() +{ + return response(ccReqDataLenInvalid); +} +static inline auto responseReqDataLenExceeded() +{ + return response(ccReqDataLenExceeded); +} +static inline auto responseParmOutOfRange() +{ + return response(ccParmOutOfRange); +} +static inline auto responseRetBytesUnavailable() +{ + return response(ccRetBytesUnavailable); +} +static inline auto responseSensorInvalid() +{ + return response(ccSensorInvalid); +} +static inline auto responseInvalidFieldRequest() +{ + return response(ccInvalidFieldRequest); +} +static inline auto responseIllegalCommand() +{ + return response(ccIllegalCommand); +} +static inline auto responseResponseError() +{ + return response(ccResponseError); +} +static inline auto responseDuplicateRequest() +{ + return response(ccDuplicateRequest); +} +static inline auto responseCmdFailSdrMode() +{ + return response(ccCmdFailSdrMode); +} +static inline auto responseCmdFailFwUpdMode() +{ + return response(ccCmdFailFwUpdMode); +} +static inline auto responseCmdFailInitAgent() +{ + return response(ccCmdFailInitAgent); +} +static inline auto responseDestinationUnavailable() +{ + return response(ccDestinationUnavailable); +} +static inline auto responseInsufficientPrivilege() +{ + return response(ccInsufficientPrivilege); +} +static inline auto responseCommandNotAvailable() +{ + return response(ccCommandNotAvailable); +} +static inline auto responseCommandDisabled() +{ + return response(ccCommandDisabled); +} +static inline auto responseUnspecifiedError() +{ + return response(ccUnspecifiedError); } } // namespace ipmi -- cgit v1.2.1