Refactor get_session_keys to be a generator based state machine#161
Merged
Conversation
bc3fce1 to
84a2f3d
Compare
jlusiardi
reviewed
Aug 24, 2019
|
|
||
|
|
||
| def create_ble_pair_verify_write(characteristic, characteristic_id): | ||
| # This is a temporary wrapper until the pairing functions are also migrated to |
Owner
There was a problem hiding this comment.
what needs to be done to handle the temporary?
Collaborator
Author
There was a problem hiding this comment.
When this PR is merged I will raise a similar one for the perform_pair_setup_part1 and perform_pair_setup_part2 functions. At that point this wrapper will go away. It's a fairly mechanical change - if this is merged tomorrow the i will raise the follow up PR Sun evening or Mon morning.
(It's just because the transport is calling TLV.encode_list now, rather than the state machine doing it, and the BLE code path uses the same function for pair_verify and pair_setup. So using the state machine approach for both of them will mean i can get rid of the temporary function, if that makes sense).
Collaborator
Author
|
\o/ |
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.
This will allow me to drop the
get_session_keysfunction from here and use the same function for both the sync and non sync code paths.The idea is to seperate the data exchanges involved in
get_session_keysfrom the network/ble transports. The state machine just takes a TLV input and gives a TLV output, it is 'pure' and side effect free and only operates on data. The invoker is responsible for the actual I/O bit. This means we can use the same logic for async and sync code paths.If we can get an approach we are happy with here there will be a very similar PR for the pairing state machine.
This code could be further simplified - I think ultimately we can refactor away the create_write_function functions as this approach isn't passing callables around. But that can be a seperate PR to keep things small and easy to review.