Verified Commit 199fe461 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Fix ADM_transfer_datasets C example

parent fe27ccbb
Loading
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@

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

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

    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_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_datasets(server, job, sources, sources_len, targets,
                                targets_len, limits, limits_len, mapping, &tx);
    ret = ADM_transfer_datasets(server, job, sources, NSOURCES, targets,
                                NTARGETS, limits, NLIMITS, mapping, &tx);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_transfer_datasets() remote procedure not "
+35 −1
Original line number Diff line number Diff line
@@ -15,11 +15,13 @@ prepare_datasets(const char* pattern, size_t n) {
    }

    for(size_t i = 0; i < n; ++i) {
        // const char* pattern = "input-dataset-%d";
        size_t len = snprintf(NULL, 0, pattern, i);
        char* id = (char*) alloca(len + 1);
        snprintf(id, len + 1, pattern, i);
        datasets[i] = ADM_dataset_create(id);
        if(!datasets[i]) {
            return NULL;
        }
    }

    return datasets;
@@ -37,4 +39,36 @@ destroy_datasets(ADM_dataset_t datasets[], size_t n) {
    free(datasets);
}

ADM_qos_limit_t*
prepare_qos_limits(size_t n) {

    ADM_qos_limit_t* limits = calloc(n, sizeof(ADM_qos_limit_t));

    if(!limits) {
        return NULL;
    }

    for(size_t i = 0; i < n; ++i) {
        limits[i] = ADM_qos_limit_create(NULL, ADM_QOS_CLASS_BANDWIDTH, 50);
        if(!limits[i]) {
            return NULL;
        }
    }

    return limits;
}

void
destroy_qos_limits(ADM_qos_limit_t* limits, size_t n) {

    for(size_t i = 0; i < n; ++i) {
        if(limits[i]) {
            ADM_qos_limit_destroy(limits[i]);
        }
    }

    free(limits);
}


#endif // SCORD_COMMON_H
+6 −0
Original line number Diff line number Diff line
@@ -9,4 +9,10 @@ prepare_datasets(const char* pattern, size_t n);
void
destroy_datasets(ADM_dataset_t datasets[], size_t n);

ADM_qos_limit_t*
prepare_qos_limits(size_t n);

void
destroy_qos_limits(ADM_qos_limit_t limits[], size_t n);

#endif // SCORD_C_EXAMPLES_COMMON_H