Verified Commit 1e3790b1 authored by ANA MANZANO RODRIGUEZ's avatar ANA MANZANO RODRIGUEZ Committed by Alberto Miranda
Browse files

Rebase changes done

parent e749cd7a
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@
#include <fmt/format.h>
#include <admire.hpp>

#define NINPUTS  10
#define NOUTPUTS 5


int
main(int argc, char* argv[]) {
@@ -38,12 +41,14 @@ main(int argc, char* argv[]) {

    admire::server server{"tcp", argv[1]};

    ADM_job_t job{};
    std::string id;
    ADM_adhoc_context_t ctx{};
    ADM_storage_t adhoc_storage{};
    ADM_return_t ret = ADM_SUCCESS;

    try {
        ret = admire::register_adhoc_storage(server, ctx, &adhoc_storage);
        ret = admire::register_adhoc_storage(server, job, id, ctx, &adhoc_storage);
    } catch(const std::exception& e) {
        fmt::print(stderr, "FATAL: ADM_register_adhoc_storage() failed: {}\n",
                   e.what());
+9 −0
Original line number Diff line number Diff line
@@ -301,6 +301,11 @@ struct adhoc_storage : public storage {
    adhoc_storage(enum storage::type type, std::string id,
                  ADM_adhoc_context_t ctx);
    adhoc_storage(const adhoc_storage& other) noexcept;
    /*adhoc_storage(enum storage::type type, std::string id, std::uint64_t server_id,
                  ADM_adhoc_context_t ctx);
    adhoc_storage(enum storage::type type, std::string id,
                  const admire::adhoc_storage::ctx& ctx);*/
                  
    adhoc_storage(adhoc_storage&&) noexcept = default;
    adhoc_storage&
    operator=(const adhoc_storage&) noexcept;
@@ -308,6 +313,10 @@ struct adhoc_storage : public storage {
    operator=(adhoc_storage&&) noexcept = default;
    ~adhoc_storage() override;


    std::uint64_t
    id() const;

    std::shared_ptr<storage::ctx>
    context() const final;

+18 −1
Original line number Diff line number Diff line
@@ -1112,8 +1112,12 @@ adhoc_storage::ctx::should_flush() const {

class adhoc_storage::impl {

    static std::uint64_t generate_id() {
        return 42;
    }

public:
    explicit impl(adhoc_storage::ctx ctx) : m_ctx(std::move(ctx)) {}
    explicit impl(adhoc_storage::ctx ctx) : m_id(generate_id()), m_ctx(std::move(ctx)) {}
    impl(const impl& rhs) = default;
    impl(impl&& rhs) = default;
    impl&
@@ -1121,12 +1125,15 @@ public:
    impl&
    operator=(impl&&) noexcept = default;

    std::uint64_t id() const { return m_id; }

    adhoc_storage::ctx
    context() const {
        return m_ctx;
    }

private:
    std::uint64_t m_id;
    adhoc_storage::ctx m_ctx;
};

@@ -1154,6 +1161,16 @@ adhoc_storage::operator=(const adhoc_storage& other) noexcept {
    return *this;
}

/*adhoc_storage::adhoc_storage(enum storage::type type, std::string id, const adhoc_storage::ctx& ctx)
    : storage(type, std::move(id)),
      m_pimpl(std::make_unique<impl>(ctx)) {}*/

std::uint64_t
adhoc_storage::id() const {
    return m_pimpl->id();
}


std::shared_ptr<storage::ctx>
adhoc_storage::context() const {
    return std::make_shared<adhoc_storage::ctx>(m_pimpl->context());
+2 −2
Original line number Diff line number Diff line
@@ -296,9 +296,9 @@ MERCURY_GEN_PROC(
);

/// ADM_register_adhoc_storage
MERCURY_GEN_PROC(ADM_register_adhoc_storage_in_t, ((int32_t) (reqs)))
MERCURY_GEN_PROC(ADM_register_adhoc_storage_in_t, ((ADM_job_t) (job))((hg_const_string_t) (id))((ADM_adhoc_context_t)(ctx)));

MERCURY_GEN_PROC(ADM_register_adhoc_storage_out_t, ((int32_t) (ret)))
MERCURY_GEN_PROC(ADM_register_adhoc_storage_out_t, ((int32_t) (retval))((ADM_storage_t)(adhoc_storage)));

/// ADM_update_adhoc_storage
MERCURY_GEN_PROC(ADM_update_adhoc_storage_in_t, ((int32_t) (reqs)))
+7 −21
Original line number Diff line number Diff line
@@ -232,31 +232,17 @@ remove_job(const server& srv, const job& job) {
}

ADM_return_t
register_adhoc_storage(const server& srv, ADM_adhoc_context_t ctx,
                       ADM_storage_t* adhoc_storage) {
register_adhoc_storage(const server& srv, const job& job, const std::string& id,
                       const adhoc_storage::ctx& ctx) {

    (void) srv;
    (void) ctx;
    (void) adhoc_storage;

    scord::network::rpc_client rpc_client{srv.protocol(), rpc_registration_cb};

    auto endp = rpc_client.lookup(srv.address());

    LOGGER_INFO("ADM_register_adhoc_storage(...)");
    const auto rv = detail::register_adhoc_storage(srv, job, id, ctx);

    ADM_register_adhoc_storage_in_t in{};
    ADM_register_adhoc_storage_out_t out;

    const auto rpc = endp.call("ADM_register_adhoc_storage", &in, &out);

    if(out.ret < 0) {
        LOGGER_ERROR("ADM_register_adhoc_storage() = {}", out.ret);
        return static_cast<ADM_return_t>(out.ret);
    if(!rv) {
        throw std::runtime_error(fmt::format("ADM_register_adhoc_storage() error: {}",
                                             ADM_strerror(rv.error())));
    }

    LOGGER_INFO("ADM_register_adhoc_storage() = {}", ADM_SUCCESS);
    return ADM_SUCCESS;
    return rv.value();
}

ADM_return_t
Loading