Verified Commit 4baa8416 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

admire::error_code is now a public type and has a formatting function

parent 337e9dab
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@

namespace admire {

using error_code = ADM_return_t;

using job_id = std::uint64_t;

struct server {
@@ -425,6 +427,38 @@ struct admire::unmanaged_rpc_type<admire::job> {
//  Formatting functions
////////////////////////////////////////////////////////////////////////////////

template <>
struct fmt::formatter<admire::error_code> : formatter<std::string_view> {
    // parse is inherited from formatter<string_view>.
    template <typename FormatContext>
    auto
    format(const admire::error_code& ec, FormatContext& ctx) const {
        std::string_view name = "unknown";

        switch(ec) {
            case ADM_SUCCESS:
                name = "ADM_SUCCESS";
                break;
            case ADM_ESNAFU:
                name = "ADM_ESNAFU";
                break;
            case ADM_EBADARGS:
                name = "ADM_EBADARGS";
                break;
            case ADM_ENOMEM:
                name = "ADM_ENOMEM";
                break;
            case ADM_EOTHER:
                name = "ADM_EOTHER";
                break;
            default:
                break;
        }

        return formatter<std::string_view>::format(name, ctx);
    }
};

template <>
struct fmt::formatter<admire::job> : formatter<std::string_view> {
    // parse is inherited from formatter<string_view>.
+0 −4
Original line number Diff line number Diff line
@@ -29,10 +29,6 @@
#include <admire.hpp>
#include <tl/expected.hpp>

namespace admire {
using error_code = ADM_return_t;
} // namespace admire

namespace admire::detail {

admire::error_code
+4 −3
Original line number Diff line number Diff line
@@ -71,12 +71,13 @@ ADM_register_job(hg_handle_t h) {
    const auto job = admire::job{42};

    const auto rpc_job = admire::unmanaged_rpc_type<admire::job>{job};
    admire::error_code rv = ADM_SUCCESS;

    out.retval = ADM_SUCCESS;
    out.retval = rv;
    out.job = rpc_job.get();

    LOGGER_INFO("RPC ID {} ({}) = {{{}, job: {{{}}}}}", id, __FUNCTION__,
                out.retval, job);
    LOGGER_INFO("RPC ID {} ({}) = {{{}, job: {{{}}}}}", id, __FUNCTION__, rv,
                job);

    ret = margo_respond(h, &out);
    assert(ret == HG_SUCCESS);