Verified Commit 525893ef authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Update ADM_link_transfer_to_data_operation()

parent db2b3c52
Loading
Loading
Loading
Loading
+18 −57
Original line number Diff line number Diff line
#include <fmt/format.h>
#include <engine.hpp>

bool
string_to_convert(std::string s) {
    if(s == "true" || s == "TRUE" || s == "True") {
        return true;
    } else if(s == "false" || s == "FALSE" || s == "False") {
        return false;
    } else {
        throw std::invalid_argument(
                "ERROR: Incorrect input value. Please try again.\n");
    }
}
#include <admire.hpp>

int
main(int argc, char* argv[]) {
@@ -24,57 +12,30 @@ 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]};

    auto endp = rpc_client.lookup(argv[1]);
    ADM_job_handle_t job{};
    ADM_data_operation_handle_t op_handle;
    bool should_stream = false;
    va_list args;
    ADM_return_t ret = ADM_SUCCESS;

    fmt::print(
            stdout,
            "Calling ADM_link_transfer_to_data_operation remote procedure on {} with operation id {}, transfer id {}, stream {}, arguments {} and job id {} ...\n",
            argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
    ADM_link_transfer_to_data_operation_in_t in;
    try {
        in.operation_id = std::stoi(argv[2]);
    } catch(const std::exception& e) {
        fmt::print(stderr, "ERROR: Incorrect input type. Please try again.\n");
        exit(EXIT_FAILURE);
    }
    try {
        in.transfer_id = std::stoi(argv[3]);
        ret = admire::link_transfer_to_data_operation(server, job, op_handle,
                                                      should_stream, args);
    } catch(const std::exception& e) {
        fmt::print(stderr, "ERROR: Incorrect input type. Please try again.\n");
        fmt::print(stderr, "FATAL: ADM_cancel_transfer() failed: {}\n",
                   e.what());
        exit(EXIT_FAILURE);
    }
    try {
        in.stream = string_to_convert(argv[4]);
    } catch(const std::invalid_argument& ia) {
        fmt::print(
                stderr,
                "ERROR: Incorrect input value. Please introduce TRUE/FALSE value. \n");
        exit(EXIT_FAILURE);
    }
    in.arguments = argv[5];
    try {
        in.job_id = std::stoi(argv[6]);
    } catch(const std::exception& e) {
        fmt::print(stderr, "ERROR: Incorrect input type. Please try again.\n");
        exit(EXIT_FAILURE);
    }

    ADM_link_transfer_to_data_operation_out_t out;

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


    if(out.ret < 0) {
        fmt::print(
                stdout,
                "ADM_link_transfer_to_data_operation remote procedure not completed successfully\n");
    if(ret != ADM_SUCCESS) {
        fmt::print(stdout,
                   "ADM_cancel_transfer() remote procedure not completed "
                   "successfully\n");
        exit(EXIT_FAILURE);
    } else {
        fmt::print(
                stdout,
                "ADM_link_transfer_to_data_operation remote procedure completed successfully\n");
    }

    fmt::print(stdout, "ADM_cancel_transfer() remote procedure completed "
                       "successfully\n");
}
+21 −1
Original line number Diff line number Diff line
@@ -504,7 +504,27 @@ link_transfer_to_data_operation(const server& srv, ADM_job_handle_t job,
    (void) should_stream;
    (void) args;

    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_link_transfer_to_data_operation(...)");

    // FIXME: change RPC fields to ADM_transfer_handle_t
    ADM_link_transfer_to_data_operation_in_t in{};
    ADM_link_transfer_to_data_operation_out_t out;

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

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

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

ADM_return_t