Exemple #1
0
/* NA test routines */
static int
test_send(struct na_test_params *params)
{
    na_tag_t send_tag = NA_TEST_SEND_TAG;
    na_op_id_t op_id = NA_OP_ID_NULL;
    na_return_t na_ret;

    /* Send a message to addr */
    sprintf(params->send_buf, "Hello Server!");

    /* Preposting response */
    na_ret = NA_Msg_recv_expected(params->na_class, params->context,
        msg_expected_recv_cb, params, params->recv_buf, params->recv_buf_len,
        params->recv_buf_plugin_data, params->server_addr, 0, send_tag + 1,
        &op_id);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not prepost recv of expected message\n");
        return EXIT_FAILURE;
    }

    /* Cancel and repost message */
    na_ret = NA_Cancel(params->na_class, params->context, op_id);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not cancel recv of expected message\n");
        return EXIT_FAILURE;
    }

    na_ret = NA_Msg_recv_expected(params->na_class, params->context,
        msg_expected_recv_cb, params, params->recv_buf, params->recv_buf_len,
        params->recv_buf_plugin_data, params->server_addr, 0, send_tag + 1,
        NA_OP_ID_IGNORE);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not prepost recv of expected message\n");
        return EXIT_FAILURE;
    }

    /* Try to cancel unexpected send */
    op_id = NA_OP_ID_NULL;
    na_ret = NA_Msg_send_unexpected(params->na_class, params->context,
        msg_unexpected_send_cb, params, params->send_buf, params->send_buf_len,
        params->send_buf_plugin_data, params->server_addr, 0, send_tag, &op_id);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not start send of unexpected message\n");
        return EXIT_FAILURE;
    }

    na_ret = NA_Cancel(params->na_class, params->context, op_id);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not cancel send of unexpected message\n");
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}
Exemple #2
0
/*---------------------------------------------------------------------------*/
hg_return_t
HG_Bulk_cancel(hg_op_id_t op_id)
{
    struct hg_bulk_op_id *hg_bulk_op_id = (struct hg_bulk_op_id *) op_id;
    hg_return_t ret = HG_SUCCESS;

    if (!hg_bulk_op_id) {
        HG_LOG_ERROR("NULL HG bulk operation ID");
        ret = HG_INVALID_PARAM;
        goto done;
    }

    if (HG_UTIL_TRUE != hg_atomic_cas32(&hg_bulk_op_id->completed, 1, 0)) {
        unsigned int i = 0;

        /* Cancel all NA operations issued */
        for (i = 0; i < hg_bulk_op_id->op_count; i++) {
            na_return_t na_ret;

            /* Cancel NA operation */
            na_ret = NA_Cancel(HG_Core_class_get_na(hg_bulk_op_id->hg_class),
                HG_Core_context_get_na(hg_bulk_op_id->context),
                hg_bulk_op_id->na_op_ids[i]);
            if (na_ret != NA_SUCCESS) {
                HG_LOG_ERROR("Could not cancel op id");
                ret = HG_NA_ERROR;
                goto done;
            }
        }
    }

done:
    return ret;
}
static int
test_bulk(struct na_test_params *params)
{
    na_tag_t bulk_tag = NA_TEST_BULK_TAG, ack_tag = NA_TEST_BULK_ACK_TAG;
    na_return_t na_ret;
    na_op_id_t op_id;

    /* Register memory */
    printf("Registering local memory...\n");
    na_ret = NA_Mem_handle_create(params->na_class, params->bulk_buf,
        sizeof(int) * params->bulk_size, NA_MEM_READWRITE,
        &params->local_mem_handle);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not create bulk handle\n");
        return EXIT_FAILURE;
    }

    na_ret = NA_Mem_register(params->na_class, params->local_mem_handle);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not create bulk handle\n");
        return EXIT_FAILURE;
    }

    /* Serialize mem handle */
    printf("Serializing bulk memory handle...\n");
    na_ret = NA_Mem_handle_serialize(params->na_class, params->send_buf,
        params->send_buf_len, params->local_mem_handle);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not serialize memory handle\n");
        return EXIT_FAILURE;
    }

    /* Recv completion ack */
    printf("Preposting recv of transfer ack...\n");
    na_ret = NA_Msg_recv_expected(params->na_class, params->context,
        ack_expected_recv_cb, params, params->recv_buf, params->recv_buf_len,
        params->server_addr, ack_tag,
        NA_OP_ID_IGNORE);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not start receive of acknowledgment\n");
        return EXIT_FAILURE;
    }

    /* Send mem handle */
    printf("Sending local memory handle...\n");
    na_ret = NA_Msg_send_expected(params->na_class, params->context,
        msg_expected_send_cb, params, params->send_buf, params->send_buf_len,
        params->server_addr, bulk_tag, &op_id);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not start send of memory handle\n");
        return EXIT_FAILURE;
    }

    na_ret = NA_Cancel(params->na_class, params->context, op_id);
    if (na_ret != NA_SUCCESS) {
        fprintf(stderr, "Could not cancel send of expected message\n");
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}