Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
✨ NetGear_Async: New exclusive Bidirectional Mode for bidirectional d…
…ata transfer [#239] - ✨ NetGear_Async's first-ever exclusive Bidirectional mode with pure asyncio implementation. -⚠️ Bidirectional mode is only available with User-defined Custom Source(i.e. `source=None`) - ⚡️ Added support for `PAIR` & `REQ/REP` bidirectional patterns for this mode. - ⚡️ Added powerful `asyncio.Queues` for handling user data and frames in real-time. - ✨ Implemented new `transceive_data` method to Transmit _(in Recieve mode)_ and Receive _(in Send mode)_ data in real-time. - ✨ Implemented `terminate_connection` internal asyncio method to safely terminate ZMQ connection and queues. - ⚡️ Added `msgpack` automatic compression encoding and decoding of data and frames in bidirectional mode. - ⚡️ Added support for `np.ndarray` video frames. - ✨ Added new `bidirectional_mode` attribute for enabling this mode. - ⚡️ Added 8-digit random alphanumeric id generator for each device. -⚠️ NetGear_Async will throw `RuntimeError` if bidirectional mode is disabled at server or client but not both. - ✨ Added new `secrets` and `string` imports. - 🐛 Fixed bug related asyncio queue freezing on calling `join()`. - 🚑️ Added `task_done()` method after every `get()` call to gracefully terminate queues. - 🔨 Improved custom source handling. - 🐛 Fixed ZMQ connection bugs in bidirectional mode. - 🚑️ Fixed several critical bugs in event loop handling. - 🐛 Fixed several bugs in bidirectional mode implementation. - 🎨 Added missing socket termination in both server and client end. - 🎨 Removed deprecated `loop` parameter from asyncio methods. - 🎨 Re-implemented `skip_loop` parameter in `close()` method. - 💥 `run_until_complete` will not used if `skip_loop` is enabled. - ✨ Added new `disable_confirmation` used to force disable termination confirmation from client in `terminate_connection`. - 💥 `skip_loop` now will create asyncio task instead and will enable `disable_confirmation` by default. - 🚑️ Replaced `create_task` with `ensure_future` to ensure backward compatibility with python-3.6 legacies. - ✏️ Fixed typos in error messages. - 🎨 Simplified code for `transceive_data` method. - 🐛 Fixed `timeout` parameter logic. - 💡 Added and Updated code comments. - 💄 Updated Admonitions. Docs: - 📝 Added usage examples for NetGear_Async's Bidirectional Mode. - 📝 Added new Usage examples and Reference doc for NetGear_Async's Bidirectional Mode. - 🍱 Added new image asset for NetGear_Async's Bidirectional Mode. - 🚩 Added NetGear_Async's `option` parameter reference. - 📝 Updated NetGear_Async definition in docs. - 💄 Changed font size for Helper methods. - 📝 Renamed `Bonus` to `References` in mkdocs.yml - 📝 Added missing helper methods in Reference. - 📝 Added more content to docs. - 🩹 Fixed redundant properties in CSS - 🐛 Fixed bugs in mkdocs.yml - ✏️ Fixed typos and context. - 📝 Added `stream.release()` missing in docs. - ✏️ Fixed several typos in code comments. - 🔊 Updated logging messages. - 💡 Updated Code Comments. - ✏️ Fixed links in docs. - 💄 Added support for search suggestions, search highlighting and search sharing (i.e. deep linking) - 🚸 Added more content to docs to make it more user-friendly. - 🚸 Added warning that JPEG Frame-Compression is disabled with Custom Source in WebGear. - 🎨 Updates images and fixed context & typos. CI: - 👷 Added complete CI tests for Bidirectional Mode - 👷 Added complete CI tests for new Bidirectional Mode. - ✨ Implemented new exclusive `Custom_Generator` class for testing bidirectional data dynamically on server-end. - ✨ Implemented new exclusive `client_dataframe_iterator` method for testing bidirectional data on client-end. - ✨ Implemented `test_netgear_async_options` and `test_netgear_async_bidirectionalmode` two new tests. - 🐛 Fixed several bugs in new CI tests. - 💚 Added `timeout` value on server end in CI tests. - 💚 Fixed typo in `TimeoutError` exception import. - ☂️ Bumped CodeCov. - 👷 Added more directories to Codecov ignore list. - 🚸 Minor tweaks to `needs-more-info` template. Helper: - ⚡️ Implemented RTSP protocol validation as demuxer - ⚡️ Implemented RSTP protocol validation as demuxer, since it's not a protocol but a demuxer. - 🎨 Implemented `get_supported_demuxers` method to get list of supported demuxers. - ✨ Added 4320p resolution support to `dimensions_to_resolutions` method. - 📝 Minor docs tweaks NetGear: - ⚡️ Update array indexing with `np.copy`. - 🎨 Minor tweaks. Asyncio: - 💥 Changed `asyncio.sleep` value to 0 - 💥 The amount of time sleep is irrelevant; the only purpose await asyncio.sleep() serves is to force asyncio to suspend execution to the event loop, and give other tasks a chance to run. Also, `await asyncio.sleep(0)` will achieve the same effect. https://stackoverflow.com/a/55782965/10158117
- Loading branch information