#pragma once #include #if __cplusplus > 201402L #include using string_view = std::string_view; #else #include using string_view = boost::string_view; #endif #include "codec.h" namespace rest_rpc { inline bool has_error(string_view result) { rpc_service::msgpack_codec codec; auto tp = codec.unpack>(result.data(), result.size()); return std::get<0>(tp) != 0; } template inline T get_result(string_view result) { rpc_service::msgpack_codec codec; auto tp = codec.unpack>(result.data(), result.size()); if (std::get<0>(tp) != 0) { auto ret = codec.unpack>(result.data(), result.size()); throw std::logic_error(std::get<1>(ret)); } auto err_tp = codec.unpack>(result.data(), result.size()); return std::get<1>(err_tp); } }