Verified Commit 77bfe429 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Add ADM_server_[create|destroy]()

parent 84992b52
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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);
@@ -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);
}
+24 −2
Original line number Diff line number Diff line
@@ -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;
+52 −21
Original line number Diff line number Diff line
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
@@ -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);
@@ -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);
}
@@ -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);
@@ -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);
}