Open
Conversation
49a7256 to
55fdc1f
Compare
Add custom validations on Message classes to guarantee at runtime their structural integrity. Such validations are opt-out, because they are considered useful and lightweight enough for most use cases. Still, they can be disabled using a global configuration parameter if need be.
6d9856d to
daca9d2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
For all messages, given its code, the associated data should have a fixed, known structure.
Currently, the code and data structure aren't clearly exposed by the library API. Codes are referenced using string literals, and data structures are not checked automatically. As a primary consequence, the result is error-prone, as the burden of keeping messages consistent falls entirely on the shoulders of the developer. Also, codes and data structures can't be easily documented, and library users are forced to go through the code base and hope not to miss a code to obtain a list of the messages they'll have to handle.
This PR introduces a new message validation API, that should be used to answer both needs:
This comes at the price of breaking the Messenger API, but we'd better pay that cost now rather than later.