WIP: Prototype for #151 #152
Closed
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 is a quick prototype for #151 option 2. This provides a mechanism to allow HAP events on the same TCP stream as calls that have request/reply semantics like get_characteristics (which is what Apple does) by treating the replies as events.
This:
The final PR should contain documentation that warns not to use the main API when subscribing to events.
I don't think i can safely implement option 1 in #151 without porting to asyncio or similar.
This is added as a new API to keep the old API and keep this as a non breaking change.
The code needs some cleanups - and there are some opportunities to reduce code duplication - but i wanted to form some consensus around the approach first.
The TL;DR for the changes are:
get_message_bus(). This returns an object that can be iterated over to receive the events. It also hasget_characteristics,put_characteristics,subscribeandunsubscribemethods that use the new_nowait()variants under the hoodget_eventon top of this API.If you like the direction this is going in I will polish it - get rid of code duplication, add tests, fix docstrings, add warnings etc.