Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

EventDispatcher supports various IO types #2560

Merged
merged 1 commit into from
Jun 3, 2024

Conversation

chenBright
Copy link
Contributor

@chenBright chenBright commented Mar 4, 2024

What problem does this PR solve?

Issue Number: resolve #2381

Problem Summary:

What is changed and the side effects?

Changed:

  1. 将SocketId的功能抽象到VersionedRefWithId。只要实现OnCreated、OnFailed、BeforeRecycle、AfterRevived等接口即可。
  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 chenBright force-pushed the io_event_type branch 6 times, most recently from fcec8d2 to 9b51e09 Compare March 4, 2024 16:57
@chenBright chenBright added the enhancement improvements on existing features label Mar 13, 2024
@chenBright chenBright force-pushed the io_event_type branch 11 times, most recently from 113f268 to b022604 Compare March 31, 2024 13:57
@chenBright chenBright force-pushed the io_event_type branch 2 times, most recently from 1078125 to 7de2d5b Compare April 8, 2024 02:33
@wwbmmm
Copy link
Contributor

wwbmmm commented Apr 8, 2024

LGTM

@chenBright chenBright force-pushed the io_event_type branch 4 times, most recently from 2b230aa to caf4c18 Compare April 9, 2024 15:23
@chenBright
Copy link
Contributor Author

rebase解决冲突和protobuf22 ci问题

@yanglimingcn
Copy link
Contributor

LGTM

@chenBright chenBright force-pushed the io_event_type branch 3 times, most recently from 5e641c6 to 355265b Compare May 31, 2024 02:56
@chenBright
Copy link
Contributor Author

rebase解决冲突

@wwbmmm wwbmmm merged commit 122355a into apache:master Jun 3, 2024
20 checks passed
@chenBright chenBright deleted the io_event_type branch June 11, 2024 01:51
@yanglimingcn
Copy link
Contributor

我最近使用了这个PR,很好用,👍,我有个问题,这里面创建一个fd使用Create,要是删掉一个fd调用哪个API呢?调用SetFailed吗?

@chenBright
Copy link
Contributor Author

chenBright commented Nov 21, 2024

我有个问题,这里面创建一个fd使用Create,要是删掉一个fd调用哪个API呢?调用SetFailed吗?

跟Socket对象一样,调SetFailed。等到VersionedRefWithId引用计数降为0,就会调BeforeRecycled,在BeforeRecycled里close fd就行。

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
enhancement improvements on existing features
Projects
None yet
Development

Successfully merging this pull request may close these issues.

EventDispatcher支持不同类型fd
3 participants