Verified Commit 0fc2880e authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

ADM_ping RPC now responds to make it consistent with other RPCs

parent 3b4e9b69
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -251,6 +251,12 @@ MERCURY_GEN_STRUCT_PROC(

// clang-format off

MERCURY_GEN_PROC(
    ADM_ping_out_t,
        ((hg_uint64_t) (op_id))
        ((int32_t) (retval))
);

/// ADM_register_job
MERCURY_GEN_PROC(
    ADM_register_job_in_t,
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ init_logger() {
void
rpc_registration_cb(scord::network::rpc_client* client) {

    REGISTER_RPC(client, "ADM_ping", void, void, NULL, false);
    REGISTER_RPC(client, "ADM_ping", void, ADM_ping_out_t, NULL, true);

    REGISTER_RPC(client, "ADM_register_job", ADM_register_job_in_t,
                 ADM_register_job_out_t, NULL, true);
+6 −3
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ using namespace std::literals;
void
rpc_registration_cb(scord::network::rpc_client* client) {

    REGISTER_RPC(client, "ADM_ping", void, void, NULL, false);
    REGISTER_RPC(client, "ADM_ping", void, ADM_ping_out_t, NULL, true);

    REGISTER_RPC(client, "ADM_register_job", ADM_register_job_in_t,
                 ADM_register_job_out_t, NULL, true);
@@ -184,12 +184,15 @@ ping(const server& srv) {
                rpc_id, std::quoted("ADM_"s + __FUNCTION__),
                std::quoted(rpc_client.self_address()));

    const auto rpc = endp.call("ADM_ping");
    ADM_ping_out_t out;

    const auto rpc = endp.call("ADM_ping", nullptr, &out);

    LOGGER_INFO("rpc id: {} name: {} from: {} <= "
                "body: {{retval: {}}} [op_id: {}]",
                rpc_id, std::quoted("ADM_"s + __FUNCTION__),
                std::quoted(rpc.origin()), ADM_SUCCESS, "n/a");
                std::quoted(rpc.origin()),
                static_cast<admire::error_code>(out.retval), out.op_id);
    return ADM_SUCCESS;
}

+28 −1
Original line number Diff line number Diff line
@@ -24,16 +24,43 @@

#include <logger/logger.hpp>
#include <net/proto/rpc_types.h>
#include <net/engine.hpp>
#include "rpc_handlers.hpp"

struct remote_procedure {
    static std::uint64_t
    new_id() {
        static std::atomic_uint64_t current_id;
        return current_id++;
    }
};

static void
ADM_ping(hg_handle_t h) {

    using scord::network::utils::get_address;

    [[maybe_unused]] hg_return_t ret;

    [[maybe_unused]] margo_instance_id mid = margo_hg_handle_get_instance(h);

    LOGGER_INFO("PING(noargs)");
    const auto id = remote_procedure::new_id();

    LOGGER_INFO("rpc id: {} name: {} from: {} => "
                "body: {{}}",
                id, std::quoted(__FUNCTION__), std::quoted(get_address(h)));

    ADM_ping_out_t out;
    out.op_id = id;
    out.retval = ADM_SUCCESS;

    LOGGER_INFO("rpc id: {} name: {} to: {} <= "
                "body: {{retval: {}}}",
                id, std::quoted(__FUNCTION__), std::quoted(get_address(h)),
                ADM_SUCCESS);

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

    ret = margo_destroy(h);
    assert(ret == HG_SUCCESS);
+1 −1
Original line number Diff line number Diff line
@@ -180,7 +180,7 @@ main(int argc, char* argv[]) {
        const auto rpc_registration_cb = [](auto&& ctx) {
            LOGGER_INFO(" * Registering RPCs handlers...");

            REGISTER_RPC(ctx, "ADM_ping", void, void, ADM_ping, false);
            REGISTER_RPC(ctx, "ADM_ping", void, ADM_ping_out_t, ADM_ping, true);

            // TODO: add internal RPCs for communication with scord
        };
Loading