Verified Commit 94f7b312 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Refactor ADM_node_t type

parent 3efff1ed
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -78,7 +78,27 @@ ADM_return_t
ADM_server_destroy(ADM_server_t server);

/* A node */
typedef char* ADM_node_t;
typedef struct adm_node* ADM_node_t;

/**
 * Initialize a node from a user-provided hostname/address.
 *
 * @remark Nodes need to be freed by calling ADM_server_destroy().
 *
 * @param[in] hostname The hostname of the node.
 * @return A valid ADM_server_t if successful or NULL in case of failure.
 */
ADM_node_t
ADM_node_create(const char* hostname);

/**
 * Destroy a node created by ADM_node_create().
 *
 * @param[in] node A valid ADM_node_t
 * @return ADM_SUCCESS or corresponding ADM error code
 */
ADM_return_t
ADM_node_destroy(ADM_node_t node);


/* A dataset handle */
+46 −2
Original line number Diff line number Diff line
@@ -27,19 +27,28 @@
#include <logger/logger.hpp>
#include "detail/impl.hpp"


/******************************************************************************/
/* Type definitions and related functions                                     */
/******************************************************************************/

struct adm_server {
    const char* s_protocol;
    const char* s_address;
};

struct adm_job {
    uint64_t j_id;
struct adm_node {
    const char* n_hostname;
};

struct adm_dataset {
    const char* d_id;
};

struct adm_job {
    uint64_t j_id;
};

/** The I/O requirements for a job */
struct adm_job_requirements {
    /** An array of input datasets */
@@ -84,6 +93,37 @@ ADM_server_destroy(ADM_server_t server) {
    return ret;
}


ADM_node_t
ADM_node_create(const char* hostname) {

    struct adm_node* adm_node =
            (struct adm_node*) malloc(sizeof(struct adm_node));

    if(!adm_node) {
        LOGGER_ERROR("Could not allocate ADM_node_t")
        return NULL;
    }

    adm_node->n_hostname = hostname;

    return adm_node;
}

ADM_return_t
ADM_node_destroy(ADM_node_t node) {
    ADM_return_t ret = ADM_SUCCESS;

    if(!node) {
        LOGGER_ERROR("Invalid ADM_node_t")
        return ADM_EBADARGS;
    }

    free(node);
    return ret;
}


ADM_dataset_handle_t
ADM_dataset_create(const char* id) {

@@ -173,6 +213,10 @@ ADM_job_create(uint64_t id) {
    return adm_job;
}


/******************************************************************************/
/* C API implementation                                                       */
/******************************************************************************/
ADM_return_t
ADM_ping(ADM_server_t server) {
    const admire::server srv{server->s_protocol, server->s_address};