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

Reply via email to