-
Notifications
You must be signed in to change notification settings - Fork 200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make Qt + asyncio + UDP work on Windows #39
Comments
I had a look at how this could be done a while ago. Doing this the "right" way, that is within tulip/asyncio is close to impossible. The common denominator event loop for qt/quamash/tulip is the Proactor/IOCP stuff. That said: The "inj" part should be work-around-able. The name lookup can be done asyncio-style and then sending udp through a regular socket is non-blocking. The "mon" part is a bit harder. Delegating moninj to a slave process/thread that translates udp to stdout/stdin might be ok. |
Did you have a look at how exactly Microsoft (or whoever is responsible) messed up IOCP/proactor enough for UDP to be that difficult? |
IOCP-UDP seems to have zero users in general. The best pointers that I have are that one would have to marry something like this: http://members.gamedev.net/edxLabs/network/WHSPSUSUIOCP.zip with this: https://github.com/python/asyncio/blob/master/overlapped.c |
84b0760 disables moninj on windows so the GUI should at least start. |
If we use UDP for logging, we're going to need that as well in the master and the controller manager. They also need to use ProactorEventLoop due to their use of subprocesses. |
There is an existing issue in the Python tracker: |
@jordens Who wants this in 1.0? |
This will require a Python patch, which from past experience with multibind takes 10 months to merge + make it to anaconda. |
@sbourdeauducq You are OK with shipping modified Qt, but not modified Python? Python is way easier to build and distribute. |
I don't like either, but the Qt bugs consistently produced ugly display artifacts whereas this Python issue only reduces the features available on Windows. The Qt bugfixes should go directly upstream, we have the workarounds in place in the meantime. |
@sbourdeauducq I put this into the 1.0 milestone because this is severely limiting the usability of the GUI on windows. The latter would be something we want for 1.0. |
Done with threads. Slightly hacky, but we should end up rewriting this with TCP at some point anyway. |
The GUI needs UDP to talk to the core device in the TTL and DDS panels. On Windows, the quamash event loop is based on ProactorEventLoop which does not support UDP.
The text was updated successfully, but these errors were encountered: