libevent的消息传递和回调注册函数

----参考原帖地址 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. 文件依赖关系

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值