Commit e4df006b authored by Ramon Nou's avatar Ramon Nou
Browse files

Merge branch...

Merge branch 'amiranda/45-refactor-library-rpc-implementation-of-admire-transfer_dataset' into 'main'

Resolve "Refactor library RPC implementation of `admire::transfer_dataset`"

This MR reimplements the `ADM_transfer_dataset` RPC with complex data types from the ADMIRE API.

It also renames the C API function to `ADM_transfer_datasets` (and similarly for the CXX API) since it is now possible to define the transfer for more than one dataset in the same call.

Closes #45

See merge request !30
parents 95c13f6c 199fe461
Loading
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -68,16 +68,21 @@ main(int argc, char* argv[]) {
        exit_status = EXIT_FAILURE;
    }

    ADM_dataset_t** sources = NULL;
    ADM_dataset_t** targets = NULL;
    ADM_qos_limit_t** limits = NULL;
    ADM_dataset_t* sources = NULL;
    size_t sources_len = 0;
    ADM_dataset_t* targets = NULL;
    size_t targets_len = 0;
    ADM_qos_limit_t* limits = NULL;
    size_t limits_len = 0;
    ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
    ADM_transfer_t tx;
    ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
                               &tx);

    ret = ADM_transfer_datasets(server, job, sources, sources_len, targets,
                                targets_len, limits, limits_len, mapping, &tx);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
                        "successfully\n");
        fprintf(stdout, "ADM_transfer_datasets() remote procedure not "
                        "completed successfully\n");
        exit_status = EXIT_FAILURE;
        goto cleanup;
    }
+11 −7
Original line number Diff line number Diff line
@@ -68,17 +68,21 @@ main(int argc, char* argv[]) {
        exit_status = EXIT_FAILURE;
    }

    ADM_dataset_t** sources = NULL;
    ADM_dataset_t** targets = NULL;
    ADM_qos_limit_t** limits = NULL;
    ADM_dataset_t* sources = NULL;
    size_t sources_len = 0;
    ADM_dataset_t* targets = NULL;
    size_t targets_len = 0;
    ADM_qos_limit_t* limits = NULL;
    size_t limits_len = 0;
    ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
    ADM_transfer_t tx;
    ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
                               &tx);

    ret = ADM_transfer_datasets(server, job, sources, sources_len, targets,
                                targets_len, limits, limits_len, mapping, &tx);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
                        "successfully\n");
        fprintf(stdout, "ADM_transfer_datasets() remote procedure not "
                        "completed successfully\n");
        exit_status = EXIT_FAILURE;
        goto cleanup;
    }
+13 −7
Original line number Diff line number Diff line
@@ -72,17 +72,23 @@ main(int argc, char* argv[]) {
    ADM_data_operation_t op;
    const char* path = "/tmpxxxxx";
    ADM_define_data_operation(server, job, path, &op);
    ADM_dataset_t** sources = NULL;
    ADM_dataset_t** targets = NULL;
    ADM_qos_limit_t** limits = NULL;

    ADM_dataset_t* sources = NULL;
    size_t sources_len = 0;
    ADM_dataset_t* targets = NULL;
    size_t targets_len = 0;
    ADM_qos_limit_t* limits = NULL;
    size_t limits_len = 0;
    ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
    ADM_transfer_t tx;
    ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
                               &tx);

    ret = ADM_transfer_datasets(server, job, sources, sources_len, targets,
                                targets_len, limits, limits_len, mapping, &tx);


    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
                        "successfully\n");
        fprintf(stdout, "ADM_transfer_datasets() remote procedure not "
                        "completed successfully\n");
        exit_status = EXIT_FAILURE;
        goto cleanup;
    }
+16 −5
Original line number Diff line number Diff line
@@ -68,13 +68,24 @@ main(int argc, char* argv[]) {
        exit_status = EXIT_FAILURE;
    }

    ADM_dataset_t** sources = NULL;
    ADM_dataset_t** targets = NULL;
    ADM_qos_limit_t** limits = NULL;
    ADM_dataset_t* sources = NULL;
    size_t sources_len = 0;
    ADM_dataset_t* targets = NULL;
    size_t targets_len = 0;
    ADM_qos_limit_t* limits = NULL;
    size_t limits_len = 0;
    ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
    ADM_transfer_t tx;
    ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
                               &tx);

    ret = ADM_transfer_datasets(server, job, sources, sources_len, targets,
                                targets_len, limits, limits_len, mapping, &tx);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_transfer_datasets() remote procedure not "
                        "completed successfully\n");
        exit_status = EXIT_FAILURE;
        goto cleanup;
    }

    int incr = 42;
    ret = ADM_set_transfer_priority(server, job, tx, incr);
+16 −9
Original line number Diff line number Diff line
@@ -30,13 +30,16 @@

#define NINPUTS  10
#define NOUTPUTS 5
#define NSOURCES 5
#define NTARGETS 5
#define NLIMITS  3

int
main(int argc, char* argv[]) {

    if(argc != 2) {
        fprintf(stderr, "ERROR: no location provided\n");
        fprintf(stderr, "Usage: ADM_transfer_dataset <SERVER_ADDRESS>\n");
        fprintf(stderr, "Usage: ADM_transfer_datasets <SERVER_ADDRESS>\n");
        exit(EXIT_FAILURE);
    }

@@ -68,22 +71,26 @@ main(int argc, char* argv[]) {
        exit_status = EXIT_FAILURE;
    }

    ADM_dataset_t** sources = NULL;
    ADM_dataset_t** targets = NULL;
    ADM_qos_limit_t** limits = NULL;
    ADM_dataset_t* sources = prepare_datasets("source-dataset-%d", NSOURCES);
    assert(sources);
    ADM_dataset_t* targets = prepare_datasets("target-dataset-%d", NTARGETS);
    assert(targets);
    ADM_qos_limit_t* limits = prepare_qos_limits(NLIMITS);
    assert(limits);
    ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
    ADM_transfer_t tx;
    ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
                               &tx);

    ret = ADM_transfer_datasets(server, job, sources, NSOURCES, targets,
                                NTARGETS, limits, NLIMITS, mapping, &tx);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
                        "successfully\n");
        fprintf(stdout, "ADM_transfer_datasets() remote procedure not "
                        "completed successfully\n");
        exit_status = EXIT_FAILURE;
        goto cleanup;
    }

    fprintf(stdout, "ADM_transfer_dataset() remote procedure completed "
    fprintf(stdout, "ADM_transfer_datasets() remote procedure completed "
                    "successfully\n");

cleanup:
Loading