bufferevent_writecb()->evbuffer_write_atmost()->evthread_notify_base_eventfd()->write()
在event_assign()中,将EV_WRITE事件和bufferevent_writecb关联起来
EV_Write事件的接收如下:
epoll_dispatch()->evmap_io_active()->event_active_nolock()->event_queue_insert()->TAILQ_INSERT_TAIL(),插入到activequeues的list中
evmap_io_active()
根据events到ctx->events中取对应的事件处理结构event;
ctx->events中的event是添加进去的,具体添加过程如下:
event_add()->event_add_internal()->evmap_io_add()添加到ctx->events中
队列事件处理:
event_base_dispatch()->event_base_loop()->event_process_active()->event_process_active_single_queue()中处理list中的事件,event_persist_closure()->evcb_callback()//bufferevent_writecb()
Write过程分析:
bufferevent_write()->evbuffer_add()->evbuffer_invoke_callbacks()->cb_func()//bufferevent_socket_outbuf_cb()
bufferevent_socket_outbuf_cb()->be_socket_add()->_bufferevent_add_event()->event_add()->event_add_internal()
->evmap_io_add()->TAILQ_INSERT_TAIL()添加到ctx->events的list中