static void *discovery_loop(void *data) { // int old_cancel_state; // pthread_setcancelstate(PTHREAD_CANCEL_ASYNCHRONOUS, &old_cancel_state); discovery_service *svc = (discovery_service *) data; char *port = port_to_string(svc); while (svc->isrunning) { jnx_socket_udp_listener_tick(svc->udp_listener, svc->receive_callback, data); } free(port); return 0; }
static void test_udp_listener_ipv6() { jnx_udp_listener *listener = jnx_socket_udp_listener_create(UDPTESTPORT,AF_INET6,NULL); fire_threaded_udp_packet_ipv6(UDPTESTPORT); int x = 0; while(x < 20) { jnx_socket_udp_listener_tick(listener,test_udp_listener_callback,NULL); if(test_udp_listener_complete)break; sleep(.5); ++x; sleep(.5); } jnx_socket_udp_listener_destroy(&listener); JNXCHECK(test_udp_listener_complete); JNXCHECK(listener == NULL); }
static void test_udp_broadcast(){ jnx_udp_listener *listener = jnx_socket_udp_listener_broadcast_create(UDPTESTPORT,AF_INET,NULL); JNXLOG(LDEBUG,"Firing broadcast packet"); fire_threaded_udp_packet_broadcast(UDPTESTPORT); int x = 0; while(x < 20) { JNXLOG(LDEBUG,"Ticking jnx_socket_udp_listener_tick"); jnx_socket_udp_listener_tick(listener,test_udp_listener_callback,NULL); if(test_udp_listener_complete)break; sleep(.5); ++x; } jnx_socket_udp_listener_destroy(&listener); JNXCHECK(test_udp_listener_complete); JNXCHECK(listener == NULL); }
static void test_udp_multicast(){ char *ip; jnx_network_interface_ip(&ip,NULL,AF_INET); JNXLOG(LDEBUG,"Using IP => %s",ip); jnx_udp_listener *listener = jnx_socket_udp_listener_multicast_create(UDPTESTPORT2,AF_INET,ip,BGROUP,NULL); fire_threaded_udp_packet_multicast(UDPTESTPORT2); int x = 0; while(x < 5) { jnx_socket_udp_listener_tick(listener,test_udp_listener_callback,NULL); if(test_udp_listener_complete)break; ++x; } jnx_socket_udp_listener_destroy(&listener); JNXCHECK(test_udp_listener_complete); JNXCHECK(listener == NULL); }