Reactor

来源:互联网 发布:网上买钻戒靠谱吗 知乎 编辑:程序博客网 时间:2024/05/07 13:30

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了。


0 0
原创粉丝点击