Boost logo

Boost :

From: Felipe Magno de Almeida (felipe.m.almeida_at_[hidden])
Date: 2006-03-23 16:15:01


Hi,

I'm implementing file AIO in asio for windows.
I've tried to use as much as possible from asio.
The problem is that when reading bigger files (more than one
megabyte), the queue returns an error: code 997, that is converted to
"Overlapped I/O operation is in progress."
When that happens, the asio deletes the handler, but the operation is
still happening, so GetQueuedCompletionStatus returns one more time
for the same overlapped with the completed IO, but the handler is
already deleted.

This happens in: handler_operation::do_completion_impl
(win_iocp_demuxer_service:169)
It holds a std::auto_ptr to the handler, but has no access to the error code.
So I cant see how to correct this.
I think that socket AIO could return this too (specially in ConnectEx,
I've seen this in my own "raw AIO" code).

I havent finished the file aio yet, when it gets a little better I'll
publish here (probably this weekend).

Thanks,

--
Felipe Magno de Almeida

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk