Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Make handlers Deferrable-aware #181

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

singpolyma
Copy link
Contributor

If a handler returns an EM::Deferrable, wait for the EM result to be ready
before considering the handler complete, raising and error result as an
exception in the current context just like a non-async handler would have done.
This allows async filters/handlers to run in order.

To be able to sync, handle_data is wrapped in a Fiber. To aid in testing or
other cases that want to wait until the whole process is done, handle_data
returns an EM::Deferrable that will signal the success or failure of the whole
process (for both the sync and async cases). This can be safely ignored by most
callers.

@bklang
Copy link
Member

bklang commented Nov 10, 2022

Looks like this has a merge conflict now. Would you take a look and resolve as necessary?

I'll be honest that I haven't reviewed this too closely, but it looks backward compatible and makes sense given your other work in this space. 👍

If a handler returns an EM::Deferrable, wait for the EM result to be ready
before considering the handler complete, raising an error result as an
exception in the current context just like a non-async handler would have done.
This allows async filters/handlers to run in order.

To be able to sync, handle_data is wrapped in a Fiber.  To aid in testing or
other cases that want to wait until the whole process is done, handle_data
returns an EM::Deferrable that will signal the success or failure of the whole
process (for both the sync and async cases).  This can be safely ignored by most
callers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants