Esempio n. 1
0
/*---------------------------------------------------------------------------*/
static na_return_t
na_test_target_lookup(struct na_test_lat_info *na_test_lat_info)
{
    struct na_test_target_lookup_arg request_args = { 0 };
    hg_request_t *request = NULL;
    na_return_t ret = NA_SUCCESS;

    request = hg_request_create(na_test_lat_info->request_class);
    request_args.addr_ptr = &na_test_lat_info->target_addr;
    request_args.request = request;

    /* Forward call to remote addr and get a new request */
    ret = NA_Addr_lookup(na_test_lat_info->na_class, na_test_lat_info->context,
        na_test_target_lookup_cb, &request_args,
        na_test_lat_info->na_test_info.target_name, NA_OP_ID_IGNORE);
    if (ret != NA_SUCCESS) {
        NA_LOG_ERROR("Could not lookup address");
        goto done;
    }

    /* Wait for request to be marked completed */
    hg_request_wait(request, NA_MAX_IDLE_TIME, NULL);

done:
    hg_request_destroy(request);
    return ret;
}
Esempio n. 2
0
void hg_engine_addr_lookup(const char* name, na_cb_t cb, void *arg)
{
    na_return_t ret;

    ret = NA_Addr_lookup(network_class, na_context, cb, arg, name, NA_OP_ID_IGNORE);
    assert(ret == NA_SUCCESS);
    (void)ret;

    return;
}
Esempio n. 3
0
int
main(int argc, char *argv[])
{
    struct na_test_info na_test_info = { 0 };
    struct na_test_params params;
    na_return_t na_ret;
    unsigned int i;
    int ret = EXIT_SUCCESS;

    /* Initialize the interface */
    NA_Test_init(argc, argv, &na_test_info);

    params.na_class = na_test_info.na_class;
    params.context = NA_Context_create(params.na_class);

    /* Allocate send and recv bufs */
    params.send_buf_len = NA_Msg_get_max_unexpected_size(params.na_class);
    params.recv_buf_len = params.send_buf_len;
    params.send_buf = (char*)NA_Msg_buf_alloc(params.na_class,
        params.send_buf_len, &params.send_buf_plugin_data);
    params.recv_buf = (char*)NA_Msg_buf_alloc(params.na_class,
        params.recv_buf_len, &params.recv_buf_plugin_data);

    /* Prepare bulk_buf */
    params.bulk_size = NA_TEST_BULK_SIZE;
    params.bulk_buf = (unsigned int *) malloc(
        params.bulk_size * sizeof(unsigned int));
    for (i = 0; i < params.bulk_size; i++) {
        params.bulk_buf[i] = i;
    }

    /* Perform an address lookup on the target */
    na_ret = NA_Addr_lookup(params.na_class, params.context, lookup_cb, &params,
        na_test_info.target_name, NA_OP_ID_IGNORE);
    if (na_ret != NA_SUCCESS) {
        NA_LOG_ERROR("Could not start lookup of addr %s",
            na_test_info.target_name);
        ret = EXIT_FAILURE;
        goto done;
    }

    while (1) {
        na_return_t trigger_ret;
        unsigned int actual_count = 0;
        unsigned int timeout = 0;

        do {
            trigger_ret = NA_Trigger(params.context, 0, 1, NULL, &actual_count);
        } while ((trigger_ret == NA_SUCCESS) && actual_count);

        if (test_msg_done_g && test_bulk_done_g)
            break;

        if (NA_Poll_try_wait(params.na_class, params.context))
            timeout = NA_MAX_IDLE_TIME;
        na_ret = NA_Progress(params.na_class, params.context, timeout);
        if (na_ret != NA_SUCCESS) {
            ret = EXIT_FAILURE;
            goto done;
        }
    }

    ret = params.ret;
    printf("Finalizing...\n");

    /* Free memory and addresses */
    na_ret = NA_Addr_free(params.na_class, params.server_addr);
    if (na_ret != NA_SUCCESS) {
        NA_LOG_ERROR("Could not free addr");
        ret = EXIT_FAILURE;
        goto done;
    }

    NA_Msg_buf_free(params.na_class, params.recv_buf, params.recv_buf_plugin_data);
    NA_Msg_buf_free(params.na_class, params.send_buf, params.send_buf_plugin_data);
    free(params.bulk_buf);

    NA_Context_destroy(params.na_class, params.context);

    NA_Test_finalize(&na_test_info);

done:
    return ret;
}
Esempio n. 4
0
int
main(int argc, char **argv)
{
    char server_name[NA_TEST_MAX_ADDR_NAME];
    struct na_test_params params;
    na_return_t na_ret;
    unsigned int i;

    /* Initialize the interface */
    params.na_class = NA_Test_client_init(argc, argv, server_name,
        NA_TEST_MAX_ADDR_NAME, NULL);

    params.context = NA_Context_create(params.na_class);

    /* Allocate send and recv bufs */
    params.send_buf_len = NA_Msg_get_max_unexpected_size(params.na_class);
    params.recv_buf_len = params.send_buf_len;
    params.send_buf = (char*) calloc(params.send_buf_len, sizeof(char));
    params.recv_buf = (char*) calloc(params.recv_buf_len, sizeof(char));

    /* Prepare bulk_buf */
    params.bulk_size = NA_TEST_BULK_SIZE;
    params.bulk_buf = (int*) malloc(params.bulk_size * sizeof(int));
    for (i = 0; i < params.bulk_size; i++) {
        params.bulk_buf[i] = i;
    }

    /* Perform an address lookup on the target */
    na_ret = NA_Addr_lookup(params.na_class, params.context, lookup_cb,
        &params, server_name, NA_OP_ID_IGNORE);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not start lookup of addr %s\n", server_name);
        return EXIT_FAILURE;
    }

    while (!test_done_g) {
        na_return_t trigger_ret;
        unsigned int actual_count = 0;

        do {
            trigger_ret = NA_Trigger(params.context, 0, 1, &actual_count);
        } while ((trigger_ret == NA_SUCCESS) && actual_count);

        if (test_done_g)
            break;

        NA_Progress(params.na_class, params.context, NA_MAX_IDLE_TIME);
    }

    printf("Finalizing...\n");

    /* Free memory and addresses */
    na_ret = NA_Addr_free(params.na_class, params.server_addr);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not free addr\n");
        return EXIT_FAILURE;
    }

    free(params.recv_buf);
    free(params.send_buf);
    free(params.bulk_buf);

    NA_Context_destroy(params.na_class, params.context);

    NA_Test_finalize(params.na_class);

    return EXIT_SUCCESS;
}
Esempio n. 5
0
/*---------------------------------------------------------------------------*/
na_return_t
NA_Addr_lookup_wait(na_class_t *na_class, const char *name, na_addr_t *addr)
{
    na_addr_t new_addr = NULL;
    na_bool_t lookup_completed = NA_FALSE;
    na_context_t *context = NULL;
    na_return_t ret = NA_SUCCESS;

    if (!na_class) {
        NA_LOG_ERROR("NULL NA class");
        ret = NA_INVALID_PARAM;
        goto done;
    }
    if (!name) {
        NA_LOG_ERROR("Lookup name is NULL");
        ret = NA_INVALID_PARAM;
        goto done;
    }
    if (!addr) {
        NA_LOG_ERROR("NULL pointer to na_addr_t");
        ret = NA_INVALID_PARAM;
        goto done;
    }

    context = NA_Context_create(na_class);
    if (!context) {
        NA_LOG_ERROR("Could not create context");
        goto done;
    }

    ret = NA_Addr_lookup(na_class, context, &na_addr_lookup_cb, &new_addr, name,
            NA_OP_ID_IGNORE);
    if (ret != NA_SUCCESS) {
        NA_LOG_ERROR("Could not start NA_Addr_lookup");
        goto done;
    }

    while (!lookup_completed) {
        na_return_t trigger_ret;
        unsigned int actual_count = 0;

        do {
            trigger_ret = NA_Trigger(context, 0, 1, &actual_count);
        } while ((trigger_ret == NA_SUCCESS) && actual_count);

        if (new_addr) {
            lookup_completed = NA_TRUE;
            *addr = new_addr;
        }

        if (lookup_completed) break;

        ret = NA_Progress(na_class, context, NA_MAX_IDLE_TIME);
        if (ret != NA_SUCCESS) {
            NA_LOG_ERROR("Could not make progress");
            goto done;
        }
    }

    ret = NA_Context_destroy(na_class, context);
    if (ret != NA_SUCCESS) {
        NA_LOG_ERROR("Could not destroy context");
        goto done;
    }

done:
    return ret;
}