Loading examples/c/ADM_register_job.c +10 −4 Original line number Diff line number Diff line Loading @@ -11,10 +11,11 @@ main(int argc, char* argv[]) { exit(EXIT_FAILURE); } #if 0 ADM_server_t* server = ADM_server_create("tcp", argv[1]); int exit_status = EXIT_SUCCESS; ADM_server_t server = ADM_server_create("tcp", argv[1]); ADM_job_handle_t job = ADM_job_handle_init(); ADM_job_handle_t job; #if 0 ADM_job_requirements_t reqs = ADM_job_requirements_init(); ADM_dataset_info_t info = ADM_dataset_info_init(); ADM_return_t ret = ADM_register_job(server, reqs, &job); Loading @@ -22,10 +23,15 @@ main(int argc, char* argv[]) { if(ret != ADM_SUCCESS) { fprintf(stdout, "ADM_register_job() remote procedure not completed " "successfully\n"); exit(EXIT_FAILURE); exit_status = EXIT_FAILURE; goto cleanup; } #endif fprintf(stdout, "ADM_register_job() remote procedure completed " "successfully\n"); cleanup: ADM_server_destroy(server); exit(exit_status); } src/api/admire.h +24 −2 Original line number Diff line number Diff line Loading @@ -44,12 +44,34 @@ extern "C" { /* Error return codes */ typedef enum { ADM_SUCCESS = 0, // FIXME: generic error only for now ADM_EINVAL, // generic error code ADM_OTHER_ERROR } ADM_return_t; /* A server */ typedef struct adm_server ADM_server_t; typedef struct adm_server* ADM_server_t; /** * Initialize a server from a user-provided name/address. * * @remark Servers need to be freed by calling ADM_server_destroy(). * * @param[in] protocol The protocol that will be used to access the server. * @param[in] address The address of server. * @return A valid ADM_server_t if successful or NULL in case of failure. */ ADM_server_t ADM_server_create(const char* protocol, const char* address); /** * Destroy a server created by ADM_server_create(). * * @param[in] server A pointer to a ADM_server_t * @return ADM_SUCCESS or corresponding ADM error code */ ADM_return_t ADM_server_destroy(ADM_server_t server); /* A node */ typedef char* ADM_node_t; Loading src/api/c_wrapper.cpp +52 −21 Original line number Diff line number Diff line Loading @@ -24,17 +24,48 @@ #include <admire.h> #include <admire.hpp> #include <logger.hpp> struct adm_server { const char* s_protocol; const char* s_address; }; ADM_server_t ADM_server_create(const char* protocol, const char* address) { struct adm_server* adm_server = (struct adm_server*) malloc(sizeof(struct adm_server)); if(!adm_server) { LOGGER_ERROR("Could not allocate ADM_server_t") return NULL; } adm_server->s_protocol = protocol; adm_server->s_address = address; return adm_server; } ADM_return_t ADM_server_destroy(ADM_server_t server) { ADM_return_t ret = ADM_SUCCESS; if(!server) { LOGGER_ERROR("Invalid ADM_server_t") return ADM_EINVAL; } free(server); return ret; } ADM_return_t ADM_register_job(ADM_server_t server, ADM_job_requirements_t reqs, ADM_job_handle_t* job) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::register_job(srv, reqs, job); } Loading @@ -43,7 +74,7 @@ ADM_return_t ADM_update_job(ADM_server_t server, ADM_job_handle_t job, ADM_job_requirements_t reqs) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::update_job(srv, job, reqs); } Loading @@ -51,7 +82,7 @@ ADM_update_job(ADM_server_t server, ADM_job_handle_t job, ADM_return_t ADM_remove_job(ADM_server_t server, ADM_job_handle_t job) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::remove_job(srv, job); } Loading @@ -61,7 +92,7 @@ ADM_register_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_context_t ctx, ADM_adhoc_storage_handle_t* adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::register_adhoc_storage(srv, job, ctx, adhoc_handle); } Loading @@ -71,7 +102,7 @@ ADM_update_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_context_t ctx, ADM_adhoc_storage_handle_t adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::update_adhoc_storage(srv, job, ctx, adhoc_handle); } Loading @@ -80,7 +111,7 @@ ADM_return_t ADM_remove_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_storage_handle_t adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::remove_adhoc_storage(srv, job, adhoc_handle); } Loading @@ -89,7 +120,7 @@ ADM_return_t ADM_deploy_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_storage_handle_t adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::deploy_adhoc_storage(srv, job, adhoc_handle); } Loading @@ -101,7 +132,7 @@ ADM_transfer_dataset(ADM_server_t server, ADM_job_handle_t job, ADM_tx_mapping_t mapping, ADM_transfer_handle_t* tx_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::transfer_dataset(srv, job, sources, targets, limits, mapping, tx_handle); Loading @@ -112,7 +143,7 @@ ADM_set_dataset_information(ADM_server_t server, ADM_job_handle_t job, ADM_dataset_handle_t target, ADM_dataset_info_t info) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_dataset_information(srv, job, target, info); } Loading @@ -122,7 +153,7 @@ ADM_set_io_resources(ADM_server_t server, ADM_job_handle_t job, ADM_storage_handle_t tier, ADM_storage_resources_t resources) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_io_resources(srv, job, tier, resources); } Loading @@ -132,7 +163,7 @@ ADM_get_transfer_priority(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t tx_handle, ADM_transfer_priority_t* priority) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_transfer_priority(srv, job, tx_handle, priority); } Loading @@ -141,7 +172,7 @@ ADM_return_t ADM_set_transfer_priority(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t tx_handle, int incr) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_transfer_priority(srv, job, tx_handle, incr); } Loading @@ -150,7 +181,7 @@ ADM_return_t ADM_cancel_transfer(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t tx_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::cancel_transfer(srv, job, tx_handle); } Loading @@ -159,7 +190,7 @@ ADM_return_t ADM_get_pending_transfers(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t** pending_transfers) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_pending_transfers(srv, job, pending_transfers); } Loading @@ -168,7 +199,7 @@ ADM_return_t ADM_set_qos_constraints(ADM_server_t server, ADM_job_handle_t job, ADM_limit_t limit) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_qos_constraints(srv, job, limit); } Loading @@ -178,7 +209,7 @@ ADM_get_qos_constraints(ADM_server_t server, ADM_job_handle_t job, ADM_qos_scope_t scope, ADM_qos_entity_t entity, ADM_limit_t** limits) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_qos_constraints(srv, job, scope, entity, limits); } Loading @@ -188,7 +219,7 @@ ADM_define_data_operation(ADM_server_t server, ADM_job_handle_t job, const char* path, ADM_data_operation_handle_t* op, ...) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; va_list args; va_start(args, op); Loading @@ -204,7 +235,7 @@ ADM_connect_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_dataset_handle_t output, bool should_stream, ...) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; va_list args; va_start(args, should_stream); Loading @@ -220,7 +251,7 @@ ADM_finalize_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_data_operation_handle_t op, ADM_data_operation_status_t* status) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::finalize_data_operation(srv, job, op, status); } Loading @@ -230,7 +261,7 @@ ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_data_operation_handle_t op, bool should_stream, ...) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; va_list args; va_start(args, should_stream); Loading @@ -244,6 +275,6 @@ ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_return_t ADM_get_statistics(ADM_server_t server, ADM_job_handle_t job, ADM_job_stats_t** stats) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_statistics(srv, job, stats); } Loading
examples/c/ADM_register_job.c +10 −4 Original line number Diff line number Diff line Loading @@ -11,10 +11,11 @@ main(int argc, char* argv[]) { exit(EXIT_FAILURE); } #if 0 ADM_server_t* server = ADM_server_create("tcp", argv[1]); int exit_status = EXIT_SUCCESS; ADM_server_t server = ADM_server_create("tcp", argv[1]); ADM_job_handle_t job = ADM_job_handle_init(); ADM_job_handle_t job; #if 0 ADM_job_requirements_t reqs = ADM_job_requirements_init(); ADM_dataset_info_t info = ADM_dataset_info_init(); ADM_return_t ret = ADM_register_job(server, reqs, &job); Loading @@ -22,10 +23,15 @@ main(int argc, char* argv[]) { if(ret != ADM_SUCCESS) { fprintf(stdout, "ADM_register_job() remote procedure not completed " "successfully\n"); exit(EXIT_FAILURE); exit_status = EXIT_FAILURE; goto cleanup; } #endif fprintf(stdout, "ADM_register_job() remote procedure completed " "successfully\n"); cleanup: ADM_server_destroy(server); exit(exit_status); }
src/api/admire.h +24 −2 Original line number Diff line number Diff line Loading @@ -44,12 +44,34 @@ extern "C" { /* Error return codes */ typedef enum { ADM_SUCCESS = 0, // FIXME: generic error only for now ADM_EINVAL, // generic error code ADM_OTHER_ERROR } ADM_return_t; /* A server */ typedef struct adm_server ADM_server_t; typedef struct adm_server* ADM_server_t; /** * Initialize a server from a user-provided name/address. * * @remark Servers need to be freed by calling ADM_server_destroy(). * * @param[in] protocol The protocol that will be used to access the server. * @param[in] address The address of server. * @return A valid ADM_server_t if successful or NULL in case of failure. */ ADM_server_t ADM_server_create(const char* protocol, const char* address); /** * Destroy a server created by ADM_server_create(). * * @param[in] server A pointer to a ADM_server_t * @return ADM_SUCCESS or corresponding ADM error code */ ADM_return_t ADM_server_destroy(ADM_server_t server); /* A node */ typedef char* ADM_node_t; Loading
src/api/c_wrapper.cpp +52 −21 Original line number Diff line number Diff line Loading @@ -24,17 +24,48 @@ #include <admire.h> #include <admire.hpp> #include <logger.hpp> struct adm_server { const char* s_protocol; const char* s_address; }; ADM_server_t ADM_server_create(const char* protocol, const char* address) { struct adm_server* adm_server = (struct adm_server*) malloc(sizeof(struct adm_server)); if(!adm_server) { LOGGER_ERROR("Could not allocate ADM_server_t") return NULL; } adm_server->s_protocol = protocol; adm_server->s_address = address; return adm_server; } ADM_return_t ADM_server_destroy(ADM_server_t server) { ADM_return_t ret = ADM_SUCCESS; if(!server) { LOGGER_ERROR("Invalid ADM_server_t") return ADM_EINVAL; } free(server); return ret; } ADM_return_t ADM_register_job(ADM_server_t server, ADM_job_requirements_t reqs, ADM_job_handle_t* job) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::register_job(srv, reqs, job); } Loading @@ -43,7 +74,7 @@ ADM_return_t ADM_update_job(ADM_server_t server, ADM_job_handle_t job, ADM_job_requirements_t reqs) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::update_job(srv, job, reqs); } Loading @@ -51,7 +82,7 @@ ADM_update_job(ADM_server_t server, ADM_job_handle_t job, ADM_return_t ADM_remove_job(ADM_server_t server, ADM_job_handle_t job) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::remove_job(srv, job); } Loading @@ -61,7 +92,7 @@ ADM_register_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_context_t ctx, ADM_adhoc_storage_handle_t* adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::register_adhoc_storage(srv, job, ctx, adhoc_handle); } Loading @@ -71,7 +102,7 @@ ADM_update_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_context_t ctx, ADM_adhoc_storage_handle_t adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::update_adhoc_storage(srv, job, ctx, adhoc_handle); } Loading @@ -80,7 +111,7 @@ ADM_return_t ADM_remove_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_storage_handle_t adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::remove_adhoc_storage(srv, job, adhoc_handle); } Loading @@ -89,7 +120,7 @@ ADM_return_t ADM_deploy_adhoc_storage(ADM_server_t server, ADM_job_handle_t job, ADM_adhoc_storage_handle_t adhoc_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::deploy_adhoc_storage(srv, job, adhoc_handle); } Loading @@ -101,7 +132,7 @@ ADM_transfer_dataset(ADM_server_t server, ADM_job_handle_t job, ADM_tx_mapping_t mapping, ADM_transfer_handle_t* tx_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::transfer_dataset(srv, job, sources, targets, limits, mapping, tx_handle); Loading @@ -112,7 +143,7 @@ ADM_set_dataset_information(ADM_server_t server, ADM_job_handle_t job, ADM_dataset_handle_t target, ADM_dataset_info_t info) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_dataset_information(srv, job, target, info); } Loading @@ -122,7 +153,7 @@ ADM_set_io_resources(ADM_server_t server, ADM_job_handle_t job, ADM_storage_handle_t tier, ADM_storage_resources_t resources) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_io_resources(srv, job, tier, resources); } Loading @@ -132,7 +163,7 @@ ADM_get_transfer_priority(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t tx_handle, ADM_transfer_priority_t* priority) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_transfer_priority(srv, job, tx_handle, priority); } Loading @@ -141,7 +172,7 @@ ADM_return_t ADM_set_transfer_priority(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t tx_handle, int incr) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_transfer_priority(srv, job, tx_handle, incr); } Loading @@ -150,7 +181,7 @@ ADM_return_t ADM_cancel_transfer(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t tx_handle) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::cancel_transfer(srv, job, tx_handle); } Loading @@ -159,7 +190,7 @@ ADM_return_t ADM_get_pending_transfers(ADM_server_t server, ADM_job_handle_t job, ADM_transfer_handle_t** pending_transfers) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_pending_transfers(srv, job, pending_transfers); } Loading @@ -168,7 +199,7 @@ ADM_return_t ADM_set_qos_constraints(ADM_server_t server, ADM_job_handle_t job, ADM_limit_t limit) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::set_qos_constraints(srv, job, limit); } Loading @@ -178,7 +209,7 @@ ADM_get_qos_constraints(ADM_server_t server, ADM_job_handle_t job, ADM_qos_scope_t scope, ADM_qos_entity_t entity, ADM_limit_t** limits) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_qos_constraints(srv, job, scope, entity, limits); } Loading @@ -188,7 +219,7 @@ ADM_define_data_operation(ADM_server_t server, ADM_job_handle_t job, const char* path, ADM_data_operation_handle_t* op, ...) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; va_list args; va_start(args, op); Loading @@ -204,7 +235,7 @@ ADM_connect_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_dataset_handle_t output, bool should_stream, ...) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; va_list args; va_start(args, should_stream); Loading @@ -220,7 +251,7 @@ ADM_finalize_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_data_operation_handle_t op, ADM_data_operation_status_t* status) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::finalize_data_operation(srv, job, op, status); } Loading @@ -230,7 +261,7 @@ ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_data_operation_handle_t op, bool should_stream, ...) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; va_list args; va_start(args, should_stream); Loading @@ -244,6 +275,6 @@ ADM_link_transfer_to_data_operation(ADM_server_t server, ADM_job_handle_t job, ADM_return_t ADM_get_statistics(ADM_server_t server, ADM_job_handle_t job, ADM_job_stats_t** stats) { const admire::server srv{server.s_protocol, server.s_address}; const admire::server srv{server->s_protocol, server->s_address}; return admire::get_statistics(srv, job, stats); }