Hi Martin,
i hadn't heard from you in a while, so i though you might have given up after nobody said anything about the last patch, but i see you've been busy :-)
i also had a go at fixing the problems you pointed out. i've attached the patch i've been working on... don't use it, it _will_ crash your wineserver! i need to create a requeue async request like yours, and activate my queues properly. The code is written to support async on serial port objects, not file objects.
Some thoughts:
* Shouldn't each wineserver object should manage it's own queues? Many different types of requests can be overlapped ... for example WaitNamedPipe can be overlapped. Should every object keep a queue for waiting on named pipes?
* wineserver should manage the timeouts and activation of requests (i see we agree there)
* Wouldn't it be better to pass an status code back to the client rather than the poll events? That way we can have STATUS_TIMEOUT, STATUS_PENDING, STATUS_CANCELLED, etc. STATUS_PENDING can be the signal to start reading/writing/etc.
Mike
Original message from: Martin Wilck Martin.Wilck@fujitsu-siemens.com
Hi,
here is a patch that fixes some of the issues with the async IO implementation in Wine that we discussed previously. My work on this was delayed by other duties, sorry. To make matters worse, I'll be out of office for the next 4 weeks (vacation :-)
THIS PATCH IS NOT FOR PRODUCTION USE.
I am submitting it as a RFC to show the basic concepts I am aiming
at.
Most important is the server-side code (server/async.h,
server/async.c)
that demonstrates the basic mechanism I am suggesting.
------------------------------------------ mailto:Mike_McCormack@start.com.au ph +82 16 430 0425
__________________________________________________________________ Get your free Australian email account at http://www.Looksmart.com.au