brpc
brpc copied to clipboard
EventDispatcher supports various IO types
What problem does this PR solve?
Issue Number: resolve #2381
Problem Summary:
What is changed and the side effects?
Changed:
- 将SocketId的功能抽象到VersionedRefWithId,满足类似SocketId的需求。只要实现OnCreate、OnFailed、OnRecycle接口即可。
- 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.(请遵循贡献者准则).