Verified Commit 2c44d3ce authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Update ADM_transfer_dataset()

parent 2378300f
Loading
Loading
Loading
Loading
+19 −28
Original line number Diff line number Diff line
#include <fmt/format.h>
#include <engine.hpp>
#include <admire.hpp>


int
@@ -14,41 +14,32 @@ main(int argc, char* argv[]) {
        exit(EXIT_FAILURE);
    }

    scord::network::rpc_client rpc_client{"tcp"};
    rpc_client.register_rpcs();
    admire::server server{"tcp", argv[1]};

    ADM_job_handle_t job{};
    ADM_dataset_handle_t** sources = nullptr;
    ADM_dataset_handle_t** targets = nullptr;
    ADM_limit_t** limits = nullptr;
    ADM_tx_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
    ADM_transfer_handle_t tx_handle{};
    ADM_return_t ret = ADM_SUCCESS;

    auto endp = rpc_client.lookup(argv[1]);

    fmt::print(
            stdout,
            "Calling ADM_transfer_dataset remote procedure on {} : {} -> {} using "
            " qos constraints {}, distribution {} and job id {} ...\n",
            argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
    ADM_transfer_dataset_in_t in;
    in.source = argv[2];
    in.destination = argv[3];
    in.qos_constraints = argv[4];
    in.distribution = argv[5];
    try {
        in.job_id = std::stoi(argv[6]);
        ret = admire::transfer_dataset(server, job, sources, targets, limits,
                                       mapping, &tx_handle);
    } catch(const std::exception& e) {
        fmt::print(stdout, "ERROR: Incorrect input type. Please try again.\n");
        fmt::print(stderr, "FATAL: ADM_cancel_transfer() failed: {}\n",
                   e.what());
        exit(EXIT_FAILURE);
    }
    ADM_transfer_dataset_out_t out;

    endp.call("ADM_transfer_dataset", &in, &out);


    if(out.ret < 0) {
        fmt::print(
                stdout,
                "ADM_transfer_dataset remote procedure not completed successfully\n");
    if(ret != ADM_SUCCESS) {
        fmt::print(stdout,
                   "ADM_transfer_dataset() remote procedure not completed "
                   "successfully\n");
        exit(EXIT_FAILURE);
    } else {
        fmt::print(
                stdout,
                "ADM_transfer_dataset remote procedure completed successfully\n");
        fmt::print(stdout, "ADM_transfer_dataset() remote procedure completed "
                           "successfully\n");
    }
}
+21 −3
Original line number Diff line number Diff line
@@ -128,16 +128,34 @@ ADM_return_t
transfer_dataset(const server& srv, ADM_job_handle_t job,
                 ADM_dataset_handle_t** sources, ADM_dataset_handle_t** targets,
                 ADM_limit_t** limits, ADM_tx_mapping_t mapping,
                 ADM_transfer_handle_t* tx) {
                 ADM_transfer_handle_t* tx_handle) {
    (void) srv;
    (void) job;
    (void) sources;
    (void) targets;
    (void) limits;
    (void) mapping;
    (void) tx;
    (void) tx_handle;

    return ADM_OTHER_ERROR;
    scord::network::rpc_client rpc_client{srv.m_protocol};
    rpc_client.register_rpcs();

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

    LOGGER_INFO("ADM_transfer_dataset(...)");

    ADM_transfer_dataset_in_t in{};
    ADM_transfer_dataset_out_t out;

    endp.call("ADM_transfer_dataset", &in, &out);

    if(out.ret < 0) {
        LOGGER_ERROR("ADM_transfer_dataset() = {}", out.ret);
        return static_cast<ADM_return_t>(out.ret);
    }

    LOGGER_INFO("ADM_transfer_dataset() = {}", ADM_SUCCESS);
    return ADM_SUCCESS;
}

ADM_return_t