-
Notifications
You must be signed in to change notification settings - Fork 224
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
Choice of framework (or DIY) to implement "reactors" #20
Comments
I like the idea of creating a reactor abstract pattern and use feature flags to swap them out (via compilation using features). The only thing to keep in mind is that if the underline framework doesn't provide all the functionality that you reactor abstract need then you will have to implement them. Ideally the code that will have dependencies on your reactor should not indirectly depend on any features that are specific to the underline framework. |
With If you can do that, you could do neat things like deterministic simulation testing. |
Yeah it'd be incredible if we could do this sort of simulation-based testing! |
Riker might be interesting to look into. I haven't personally used it yet, but it may at the least have some useful ideas. The 'self-healing/supervisor' feature (like Erlang) would be a nice addition |
Riker does look pretty cool, and quite simple. Will check it out! |
async-std might be good option for low reactor. |
The first iteration of this was done in #302. Obviously there will be more detailed work done when we actually have a p2p layer. But we seemed to have moved on from the questions in this issue. Closing for now. ✌️ |
As per #19, one of the decisions we have to make is whether to roll our own reactor framework (as in the Go version of Tendermint) or use an existing framework (such as Actix, based on Tokio) to handle all that for us.
Whichever approach we choose, we should abstract the relevant reactor functionality in such a way that we can swap out the framework at a later stage if necessary. This would potentially also allow us to have multiple implementations and swap them out by way of feature flags.
My preference is to design the abstract reactor pattern we want, and then if Actix will allow us to facilitate that design then we go with Actix (at least at first, to give us some momentum).
The text was updated successfully, but these errors were encountered: