4,358
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <event2/event.h>
#include <event2/thread.h>
#include <csignal>
void log_callback(int security, const char* msg)
{
std::cout << "log: security=" << security << ", msg=" << msg;
}
void fatal_callback(int err)
{
std::cout << "fatal: " << err << std::endl;
abort();
}
void event_callback(evutil_socket_t s, short event, void * arg)
{
std::cout << "SIGINT triggered, exit loop" << std::endl;
struct event_base *eb = (struct event_base*)(arg);
if (eb != NULL)
{
event_base_loopexit(eb, NULL);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
event_set_log_callback(log_callback);
event_set_fatal_callback(fatal_callback);
//event_enable_debug_logging(EVENT_DBG_ALL);
event_enable_debug_mode();
evthread_use_windows_threads();
struct event_config *ec = event_config_new();
event_config_set_flag(ec, EVENT_BASE_FLAG_STARTUP_IOCP);
event_config_require_features(ec, EV_FEATURE_ET);
struct event_base *eb = event_base_new_with_config(ec);
if (eb != NULL)
{
struct event *sigint = evsignal_new(eb, SIGINT, event_callback, eb);
event_base_dispatch(eb);
event_base_free(eb);
}
event_config_free(ec);
return 0;