Improve the I/O completion errors handling on Windows
authorDenis Shienkov <denis.shienkov@gmail.com>
Sat, 7 Jun 2014 10:04:12 +0000 (14:04 +0400)
committerDenis Shienkov <denis.shienkov@gmail.com>
Sun, 29 Jun 2014 16:06:37 +0000 (18:06 +0200)
commit38f564f7255330710defcf839f4cd04e1ccfc417
treed0be41196bdb2a6878a6af1567d12183b11038b2
parent406d8d83cc11601d7121f1cb5de806a090080ddd
Improve the I/O completion errors handling on Windows

* It is necessary to ignore the NoError error code.

* In case of error from GetOverlappedResult() it is necessary to stop
the I/O operation by a immediate return from the function, because I/O
processing does not make sense. This is consistent behavior similar to
starting I/O operations.

* All errors from the read completion should be interpreted as ReadError.
Exception is only the critical ResourceError error which it is necessary
to leave without changes. This is also consistent behavior similar to
starting I/O operations.

* The write completion error handling should be similar to the read
completion handling.

* For the communication completion we have no specific error codes.
Therefore error handling shall be without modification of their error
code.

Also were made small cosmetic fixes to the related start I/O methods.

Tested on Windows 7/8 with the on-board, the PL2303 and the virtual
com0com serial ports using Qt4 and then Qt5. Testing are made by means
of examples of library and also by means of auto tests, no regressions
found.

Change-Id: I0d08b53627431c42ab5147d4330f1aaf819b4d63
Reviewed-by: Peter K├╝mmel <syntheticpp@gmx.net>
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
src/serialport/qserialport_win.cpp