int main(int argc, char *argv[]) { int rc; nssi_service svc; logger_init(LOG_ERROR, "nssiselfsend.log"); pthread_barrier_init(&barrier, NULL, 2); // common init nssi_rpc_init(NSSI_DEFAULT_TRANSPORT, NSSI_DEFAULT_ENCODE, NULL); launch_wait_thread(); // wait for the service to initialize pthread_barrier_wait(&barrier); // client init nssi_init(NSSI_DEFAULT_TRANSPORT); for (int i=0; i < 3; i++) { log_debug(selfsend_debug_level, "Try to connect to server: attempt #%d", i); rc=nssi_get_service(NSSI_DEFAULT_TRANSPORT, my_url.c_str(), 5000, &svc); if (rc == NSSI_OK) break; else if (rc != NSSI_ETIMEDOUT) { log_error(selfsend_debug_level, "could not get svc description: %s", nssi_err_str(rc)); break; } } sleep(1); // shutdown the service rc = nssi_kill(&svc, 0, 5000); // finalize the client nssi_fini(NSSI_DEFAULT_TRANSPORT); join_wait_thread(); // finalize the NSSI library rc = nssi_rpc_fini(NSSI_DEFAULT_TRANSPORT); if (rc != NSSI_OK) log_error(selfsend_debug_level, "Error in nssi_rpc_fini"); logger_fini(); return 0; }
int main(int argc, char *argv[]) { NNTI_result_t rc; selfsend_args *ssa; char server_url[NNTI_URL_LEN]; logger_init(LOG_ERROR, NULL); pthread_barrier_init(&barrier, NULL, 2); rc=NNTI_init(NNTI_DEFAULT_TRANSPORT, NULL, &trans_hdl); NNTI_dt_sizeof(&trans_hdl, &trans_hdl, &packed_size); NNTI_dt_pack(&trans_hdl, &trans_hdl, packed_buf, packed_size); NNTI_dt_unpack(&trans_hdl, ©_trans_hdl, packed_buf, packed_size); rc=NNTI_get_url(©_trans_hdl, server_url, NNTI_URL_LEN); launch_wait_thread(); pthread_barrier_wait(&barrier); rc=NNTI_connect( ©_trans_hdl, server_url, 5000, &server_hdl); NNTI_dt_sizeof(©_trans_hdl, &server_hdl, &packed_size); NNTI_dt_pack(©_trans_hdl, &server_hdl, packed_buf, packed_size); NNTI_dt_unpack(©_trans_hdl, ©_server_hdl, packed_buf, packed_size); rc=NNTI_alloc(©_trans_hdl, NNTI_REQUEST_BUFFER_SIZE, 1, NNTI_SEND_SRC, &send_mr); NNTI_dt_sizeof(©_trans_hdl, &send_mr, &packed_size); NNTI_dt_pack(©_trans_hdl, &send_mr, packed_buf, packed_size); NNTI_dt_unpack(©_trans_hdl, ©_send_mr, packed_buf, packed_size); ssa=(selfsend_args *)NNTI_BUFFER_C_POINTER(&send_mr); ssa->data.int_val =10; ssa->data.float_val =10.0; ssa->data.double_val=10.0; ssa->chksum=calc_checksum((const char *)&ssa->data, sizeof(data_t)); rc=NNTI_send(©_server_hdl, ©_send_mr, NULL, &send_wr); NNTI_dt_sizeof(©_trans_hdl, &send_wr, &packed_size); NNTI_dt_pack(©_trans_hdl, &send_wr, packed_buf, packed_size); NNTI_dt_unpack(©_trans_hdl, ©_send_wr, packed_buf, packed_size); rc=NNTI_wait(©_send_wr, 5000, &send_status); NNTI_dt_free(©_trans_hdl, ©_send_wr); pthread_barrier_wait(&barrier); NNTI_dt_free(©_trans_hdl, ©_send_mr); NNTI_free(&send_mr); NNTI_dt_free(©_trans_hdl, ©_server_hdl); rc=NNTI_disconnect( ©_trans_hdl, &server_hdl); join_wait_thread(); NNTI_dt_free(&trans_hdl, ©_trans_hdl); NNTI_fini(&trans_hdl); if (success) std::cout << "\nEnd Result: TEST PASSED" << std::endl; else std::cout << "\nEnd Result: TEST FAILED" << std::endl; return (success ? 0 : 1 ); }