Feat/fire and forget remote#2792
Conversation
13b792e to
873df66
Compare
|
@postlund how about rebase this branch instead of merge main branch into feature branch? |
Yes, that would be great! I guess "Update" became a merge. |
cb8fd74 to
a4b4acb
Compare
…rors Add an opt-in fire-and-forget path for MRP remote commands while keeping defaults unchanged; allow overriding command timeouts. Treat closed transports during send as ConnectionLostError with an explicit reconnect hint and convert response timeouts to OperationTimeoutError. Cover the new behaviors in mrp protocol/interface tests. # Conflicts: # pyatv/protocols/mrp/protocol.py
Add send_command entry point to RemoteControl interface and relay it via FacadeRemoteControl so consumers can use fire-and-forget/timeout overrides from supporting protocols.
a4b4acb to
ee56bfa
Compare
|
I like the robustness updates to MRP, but I feel that |
|
Addressed review: removed public send_command exposure from RemoteControl/facade/MRP API; internal _send_command remains for fire-and-forget usage. Updated MRP interface tests accordingly. |
|
@Skyline-23 Sorry about the looong delay, but did you actually push your changes? |
This pull request introduces several reliability and usability improvements to the MRP protocol implementation, focusing on robust connection handling, improved command sending flexibility, and enhanced compatibility with sandboxed network environments. It also adds new tests to ensure correct behavior in these areas.
MRP Protocol Reliability and Command Handling:
sendandsend_rawmethods ofMrpConnection, raisingConnectionLostErrorif the connection is closed or lost during send operations. [1] [2]MrpProtocolto centralize connection state checks with_ensure_send_possible, ensuring proper exceptions are raised for invalid or closed states. Enhancedsendandsend_and_receiveto handle fire-and-forget (no response) operations and propagate connection errors. [1] [2] [3]_send_commandand publicsend_commandinMrpRemoteControlto support fire-and-forget commands and custom timeouts, improving API flexibility. [1] [2] [3]Network Compatibility Improvements:
Testing Enhancements: