libevent 自定義事件處理
定義事件
struct Event{ int type; void* data; struct event ev; };
//回撥函式處理
static void event_cb(evutil_socket_t fd, short event, void *arg) { Event* myEvent = (Event*)arg; if (!myEvent) { return ; }
switch(myEvent->type) { case 0: std::cout<<"event 1 occur"<<std::endl; if (myEvent->data) { delete[] myEvent->data; } break; default: break; } delete myEvent; return; }
主函式處理如下:
struct event_base *base;
WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); (void)WSAStartup(wVersionRequested, &wsaData);
/* Initalize the event library */ base = event_base_new();
Event* myEvent = new Event(); myEvent->type = 0; myEvent->data = new char[10]; event_assign(&(myEvent->ev), base, -1, EV_PERSIST, event_cb, myEvent); event_add(&myEvent->ev,NULL);
//觸發自定義事件 event_active(&myEvent->ev,MY_EVENT_TRAN,0); event_base_dispatch(base);