I have this pet project of mine in which I'm testing the possibility of integrating libuv's event loop cleanly with Qt. After some research I come to conclusion that custom class based on QAbstractEventDispatcher will be perfect for this. Some prototyping later and - give or take few bugs - it seems to be somewhat working :] Given the lack of written examples on how things work on this level I'm not quite sure about one thing. Both methods - registerSocketNotifier() and unregisterSocketNotifier() - get called very frequently on the same QSocketNotifier, with identical QSocketNotifier::Type. Example debug output looks like this: [debug ] 18:33:48.013 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.024 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.061 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.072 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.110 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.121 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.157 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.168 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.205 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.216 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.253 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.265 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.301 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.311 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.349 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.360 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.397 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.407 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.445 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.456 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.494 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.504 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.542 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.553 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.590 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.601 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.638 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.649 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.686 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.697 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.734 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.744 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.782 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.793 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.831 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.841 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.879 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.890 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.927 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.938 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.975 LibUvEventDispatcher::registerSocketNotifier() QSocketNotifier(0x1cb64fde5a0) [debug ] 18:33:48.986 LibUvEventDispatcher::unregisterSocketNotifier() QSocketNotifier(0x1cb64fde5a0) Which come close to 40Hz for both functions. Is this ... normal? Have I done something wrong in my implementation of custom EventDispatcher? I'm testing this on Windows 10. My application uses QWebSocketServer. |
_______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest