Added select() backend which can be used as a fallback if epoll is not available.
This commit is contained in:
@@ -330,7 +330,7 @@ void runloop(size_t clients)
|
||||
|
||||
while (running)
|
||||
{
|
||||
event_base_loop(net_get_evbase(), EVLOOP_ONCE);
|
||||
net_backend_process();
|
||||
}
|
||||
|
||||
for (n = 0; n < clients; n++)
|
||||
@@ -413,63 +413,17 @@ void parse_command_line(int argc, char** argv)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef WIN32
|
||||
static void handle_signal(int signal, short events, void* arg)
|
||||
{
|
||||
switch (signal)
|
||||
{
|
||||
case SIGINT:
|
||||
case SIGTERM:
|
||||
running = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static struct event signal_events[10];
|
||||
static int signals[] =
|
||||
{
|
||||
SIGINT, /* Interrupt the application */
|
||||
SIGTERM, /* Terminate the application */
|
||||
0
|
||||
};
|
||||
|
||||
void setup_signal_handlers()
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; signals[i]; i++)
|
||||
{
|
||||
signal_set(&signal_events[i], signals[i], handle_signal, NULL);
|
||||
signal_add(&signal_events[i], NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void shutdown_signal_handlers()
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; signals[i]; i++)
|
||||
{
|
||||
signal_del(&signal_events[i]);
|
||||
}
|
||||
}
|
||||
#endif /* WIN32 */
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
parse_command_line(argc, argv);
|
||||
|
||||
net_initialize();
|
||||
setup_signal_handlers();
|
||||
|
||||
hub_log_initialize(NULL, 0);
|
||||
hub_set_log_verbosity(1000);
|
||||
|
||||
runloop(cfg_clients);
|
||||
|
||||
shutdown_signal_handlers();
|
||||
net_destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ static int handle(struct ADC_client* client, enum ADC_client_callback_type type,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int running = 1;
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
@@ -79,7 +80,10 @@ int main(int argc, char** argv)
|
||||
ADC_client_set_callback(&client, handle);
|
||||
ADC_client_connect(&client, argv[1]);
|
||||
|
||||
event_dispatch();
|
||||
while (running)
|
||||
{
|
||||
net_backend_process();
|
||||
}
|
||||
|
||||
ADC_client_destroy(&client);
|
||||
net_destroy();
|
||||
|
||||
Reference in New Issue
Block a user