1.类图
不管设计模式,reactor中的Add/Del/Process就是SelectDemultiplexer(此次只关注此多路分发器)中的
+ AddHandler_:FD_SET 把EventHandler::GetHandle()放入select监听集。(还有poll/epoll等)
+ DelHandler_:FD_CLR
+ ProcessHandler:api select
检测到rd/wr/err就调用
EventHandler::HandleRd
EventHandler::HandleWr
EventHandler::HandleErr
2.Srv demo
3.简结
Ø obj:EventHandler
回调函数集
Ø Reactor::AddHandler
先把obj::m_handle对应的EventHandler::HandleCBxx放入map[obj::m_handle] = obj:EventHandler::HandleCBxx,再把obj::m_handle放入监听集中(select/poll/epoll)。
Ø Reactor::ProcessHandler
监听到了,找到对应的obj:EventHandler并执行。
Ø 扩展
在我们自己的app中,一个event对应一个fd。
fd0 = open()
fdn = open()
这样set/get event就可以用reactor了。