Skip to content
Snippets Groups Projects
Verified Commit 199fe461 authored by Alberto Miranda's avatar Alberto Miranda :hotsprings:
Browse files

Fix ADM_transfer_datasets C example

parent fe27ccbb
No related branches found
No related tags found
1 merge request!30Resolve "Refactor library RPC implementation of `admire::transfer_dataset`"
Pipeline #3122 passed
......@@ -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 "
......
......@@ -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
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment