----参考原帖地址 https://www.cnblogs.com/secondtonone1/p/5554075.html
1. evconnlistener_new_bind函数:
(1) evconnlistener_new_bind:完成socket生成和绑定
(2) evconnlistener_new:生成evconnlistener* listener, 并将listener和socket绑定在一起。
(3) mm_calloc:开辟一个evconnlistener_event* 空间
(4) event_assign:对event的属性进行设置,主要对event设置了listener_read_cb回调函数
(5) evconnlistener_enable:完成把事件添加到事件队列的功能
(6) event_add,event_add_internal:完成事件添加,根据不同的事件类型将事件放到evmap里,调用不同模型的add函数
(7) evmap_io_add: I/O读写事件的添加处理
(8) evconnlistener:把listener的基本操作封装成一个结构体
(9) listener_read_cb:listen成功之后被调用。它内部进行accept,有客户端连上来时,会调用后面的listener_cb
2. listener_cb函数:
(1) listener_cb:当有新的连接进来的时候,触发listener_cb
(2) bufferevent_socket_new:生成一个bufferevent,用于读或者写
(3) event_assign:对event的属性进行设置,主要设置bufferevent_readcb,bufferevent_writecb
(4) evbuffer_add_cb:为evbuffer设置ev_write事件的回调函数
(5) bufferevent_setcb:设置了写回调函数和事件的回调函数
(6) bufferevent_enable:启用写事件回调
3. event_base_dispatch函数:
(1) event_base_loop:派发事件函数入口
(2) epoll_dispatch(evsel->dispatch):不同模型的派发函数。模型:epoll,poll,select
(3) evmap_io_active:将活动事件放入active队列
(4) event_queue_insert:将event放入激活队列里,并且更新event在evmap中的标记状态
(5) event_process_active:处理激活队列中的event
(6) event_process_active_single_queue:根据不同的事件类型,调用不同的事件回调函数
(7) *ev->ev_callback(listener_read_cb):绑定在event上的回调函数
4. 文件依赖关系: