brpc icon indicating copy to clipboard operation
brpc copied to clipboard

EventDispatcher supports various IO types

Open chenBright opened this issue 1 year ago • 0 comments

What problem does this PR solve?

Issue Number: resolve #2381

Problem Summary:

What is changed and the side effects?

Changed:

  1. 将SocketId的功能抽象到VersionedRefWithId,满足类似SocketId的需求。只要实现OnCreate、OnFailed、OnRecycle接口即可。
  2. EventDispatcher支持多种IO类型。在EventDispatcher和具体IO对象之间加入一层EventData对象(包含IO对象id、读事件回调函数、写事件回调函数)。在1的基础上,实现EventDataId,代替EventDispatcher中的SocketId。IO对象创建自己的EventData并持有EventDataId,将其注册到EventDispatcher。当有事件触发时,EventDispatcher通过EventDataId找到EventData,执行对应的回调函数。

Side effects:

  • Performance effects(性能影响):

  • Breaking backward compatibility(向后兼容性):


Check List:

  • Please make sure your changes are compilable(请确保你的更改可以通过编译).
  • When providing us with a new feature, it is best to add related tests(如果你向我们增加一个新的功能, 请添加相关测试).
  • Please follow Contributor Covenant Code of Conduct.(请遵循贡献者准则).

chenBright avatar Mar 04 '24 15:03 chenBright