mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
windows, python: Remove code duplication in send/recv functions
Move the return value at the end of the function regardless of the pending/non-pending operation. Signed-off-by: Alin Balutoiu <abalutoiu@cloudbasesolutions.com> Acked-by: Russell Bryant <russell@ovn.org> Acked-by: Alin Gabriel Serdean <aserdean@ovn.org> Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org>
This commit is contained in:
committed by
Alin Gabriel Serdean
parent
e2e31d17f8
commit
ba953e1e83
@@ -321,11 +321,6 @@ class Stream(object):
|
||||
self._read,
|
||||
False)
|
||||
self._read_pending = False
|
||||
recvBuffer = self._read_buffer[:nBytesRead]
|
||||
# recvBuffer will have the type memoryview in Python3.
|
||||
# We can use bytes to convert it to type bytes which works on
|
||||
# both Python2 and Python3.
|
||||
return (0, bytes(recvBuffer))
|
||||
except pywintypes.error as e:
|
||||
if e.winerror == winutils.winerror.ERROR_IO_INCOMPLETE:
|
||||
# The operation is still pending, try again
|
||||
@@ -336,30 +331,31 @@ class Stream(object):
|
||||
return (0, "")
|
||||
else:
|
||||
return (errno.EINVAL, "")
|
||||
(errCode, self._read_buffer) = winutils.read_file(self.pipe,
|
||||
n,
|
||||
self._read)
|
||||
if errCode:
|
||||
if errCode == winutils.winerror.ERROR_IO_PENDING:
|
||||
self._read_pending = True
|
||||
return (errno.EAGAIN, "")
|
||||
elif errCode in winutils.pipe_disconnected_errors:
|
||||
# If the pipe was disconnected, return 0.
|
||||
return (0, "")
|
||||
else:
|
||||
return (errCode, "")
|
||||
else:
|
||||
(errCode, self._read_buffer) = winutils.read_file(self.pipe,
|
||||
n,
|
||||
self._read)
|
||||
if errCode:
|
||||
if errCode == winutils.winerror.ERROR_IO_PENDING:
|
||||
self._read_pending = True
|
||||
return (errno.EAGAIN, "")
|
||||
elif errCode in winutils.pipe_disconnected_errors:
|
||||
# If the pipe was disconnected, return 0.
|
||||
return (0, "")
|
||||
else:
|
||||
return (errCode, "")
|
||||
|
||||
try:
|
||||
nBytesRead = winutils.get_overlapped_result(self.pipe,
|
||||
self._read,
|
||||
False)
|
||||
winutils.win32event.SetEvent(self._read.hEvent)
|
||||
except pywintypes.error as e:
|
||||
if e.winerror in winutils.pipe_disconnected_errors:
|
||||
# If the pipe was disconnected, return 0.
|
||||
return (0, "")
|
||||
else:
|
||||
return (e.winerror, "")
|
||||
try:
|
||||
nBytesRead = winutils.get_overlapped_result(self.pipe,
|
||||
self._read,
|
||||
False)
|
||||
winutils.win32event.SetEvent(self._read.hEvent)
|
||||
except pywintypes.error as e:
|
||||
if e.winerror in winutils.pipe_disconnected_errors:
|
||||
# If the pipe was disconnected, return 0.
|
||||
return (0, "")
|
||||
else:
|
||||
return (e.winerror, "")
|
||||
|
||||
recvBuffer = self._read_buffer[:nBytesRead]
|
||||
# recvBuffer will have the type memoryview in Python3.
|
||||
@@ -406,7 +402,6 @@ class Stream(object):
|
||||
self._write,
|
||||
False)
|
||||
self._write_pending = False
|
||||
return nBytesWritten
|
||||
except pywintypes.error as e:
|
||||
if e.winerror == winutils.winerror.ERROR_IO_INCOMPLETE:
|
||||
# The operation is still pending, try again
|
||||
@@ -417,19 +412,18 @@ class Stream(object):
|
||||
return -errno.ECONNRESET
|
||||
else:
|
||||
return -errno.EINVAL
|
||||
|
||||
self._write_pending = False
|
||||
(errCode, nBytesWritten) = winutils.write_file(self.pipe,
|
||||
buf,
|
||||
self._write)
|
||||
if errCode:
|
||||
if errCode == winutils.winerror.ERROR_IO_PENDING:
|
||||
self._write_pending = True
|
||||
return -errno.EAGAIN
|
||||
if (not nBytesWritten and
|
||||
errCode in winutils.pipe_disconnected_errors):
|
||||
# If the pipe was disconnected, return connection reset.
|
||||
return -errno.ECONNRESET
|
||||
else:
|
||||
(errCode, nBytesWritten) = winutils.write_file(self.pipe,
|
||||
buf,
|
||||
self._write)
|
||||
if errCode:
|
||||
if errCode == winutils.winerror.ERROR_IO_PENDING:
|
||||
self._write_pending = True
|
||||
return -errno.EAGAIN
|
||||
if (not nBytesWritten and
|
||||
errCode in winutils.pipe_disconnected_errors):
|
||||
# If the pipe was disconnected, return connection reset.
|
||||
return -errno.ECONNRESET
|
||||
return nBytesWritten
|
||||
|
||||
def run(self):
|
||||
|
Reference in New Issue
Block a user