Message148187
| Author |
pitrou |
| Recipients |
brian.curtin, jnoller, pitrou, python-dev, sbt, tim.golden |
| Date |
2011年11月23日.16:01:25 |
| SpamBayes Score |
5.4590337e-06 |
| Marked as misclassified |
No |
| Message-id |
<1322063778.3322.2.camel@localhost.localdomain> |
| In-reply-to |
<1322048662.68.0.632615343915.issue12328@psf.upfronthosting.co.za> |
| Content |
> There are three "expected" error conditions:
>
> ERROR_OPERATION_ABORTED: operation stopped by CancelIo(Ex)()
> ERROR_MORE_DATA: operation complete, but only got part of the message
> ERROR_IO_INCOMPLETE: operation still has not finished
>
> In the win32 api you need GetLastError() to distinguish between these
> cases, but maybe we can expose something better.
It seems to me that ERROR_OPERATION_ABORTED is a "true" error, and so
should raise an exception.
> The cases aren't really mutually exclusive: if you call ov.cancel()
> you *must* still do ov.GetOverlappedResult(True) to check for the race
> where the operation completes after the wait times out, but before
> ov.cancel() can stop it. (Your original implementation had that bug
> -- see point (5) in my original bug report.)
Ah, right. Thanks for the explanation. |
|