feat: expose engine FFI API to a Dart consumer (prototype 2) #850
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This diff is a variation of #849
where we use protobuf instead of a custom JSON message format
managed by us. Therefore, this diff allows us to evaluate which
is the cost of inventing a custom JSON data format.
At the FFI level, the most relevant change is that we are not
passing along UTF-8 strings anymore, rather we're now using
binary buffers. I spent some (but not too much) trying to see
whether we could actually avoid unnecessary copies. I could
do that for events but could not do that for messages. I think
it's fair enough since events are more frequent and we're not
exchanging super large messages anyway.
Also, the whole Dart codebase is a bit leaner because in the
meanwhile I leveled up a bit :^).
Reference issue ooni/probe#2197