[ovs-dev] [PATCH 1/2] windows, python: create a different event for sockets

Russell Bryant russell at ovn.org
Tue Sep 5 18:52:37 UTC 2017


Acked-by: Russell Bryant <russell at ovn.org>

On Tue, Aug 29, 2017 at 5:09 AM,  <aserdean at ovn.org> wrote:
> CC: Russell Bryant <russell at ovn.org>; Lance Richardson <lrichard at redhat.com>
>
> Can you please take a look?
>
> Tested-by: Alin Gabriel Serdean <aserdean at ovn.org>
>
>> -----Original Message-----
>> From: ovs-dev-bounces at openvswitch.org [mailto:ovs-dev-
>> bounces at openvswitch.org] On Behalf Of Alin Balutoiu
>> Sent: Friday, August 25, 2017 6:03 PM
>> To: dev at openvswitch.org
>> Cc: Alin Gabriel Serdean <aserdean at ovn.org>
>> Subject: [ovs-dev] [PATCH 1/2] windows, python: create a different event
>> for sockets
>>
>> At the moment the sockets on Windows use the same events that are being
>> created for the pipes.
>>
>> This is not correct because they should be different events.
>>
>> This patch introduces a new event which should be used for sockets.
>> The new event needs to be set on automatic reset with its initial state
> not
>> signaled.
>>
>> Signed-off-by: Alin Balutoiu <abalutoiu at cloudbasesolutions.com>
>> Co-authored-by: Alin Gabriel Serdean <aserdean at ovn.org>
>> Signed-off-by: Alin Gabriel Serdean <aserdean at ovn.org>
>> ---
>>  python/ovs/stream.py | 19 +++++++++++--------
>>  1 file changed, 11 insertions(+), 8 deletions(-)
>>
>> diff --git a/python/ovs/stream.py b/python/ovs/stream.py index
>> 717ea18..9d0536d 100644
>> --- a/python/ovs/stream.py
>> +++ b/python/ovs/stream.py
>> @@ -102,10 +102,6 @@ class Stream(object):
>>          self.socket = socket
>>          self.pipe = pipe
>>          if sys.platform == 'win32':
>> -            self._read = pywintypes.OVERLAPPED()
>> -            self._read.hEvent = winutils.get_new_event()
>> -            self._write = pywintypes.OVERLAPPED()
>> -            self._write.hEvent = winutils.get_new_event()
>>              if pipe is not None:
>>                  # Flag to check if fd is a server HANDLE.  In the case of
> a
>>                  # server handle we have to issue a disconnect before
> closing @@ -
>> 114,6 +110,13 @@ class Stream(object):
>>                  suffix = name.split(":", 1)[1]
>>                  suffix = ovs.util.abs_file_name(ovs.dirs.RUNDIR, suffix)
>>                  self._pipename = winutils.get_pipe_name(suffix)
>> +                self._read = pywintypes.OVERLAPPED()
>> +                self._read.hEvent = winutils.get_new_event()
>> +                self._write = pywintypes.OVERLAPPED()
>> +                self._write.hEvent = winutils.get_new_event()
>> +            else:
>> +                self._wevent = winutils.get_new_event(bManualReset=False,
>> +
>> + bInitialState=False)
>>
>>          self.name = name
>>          if status == errno.EAGAIN:
>> @@ -459,24 +462,24 @@ class Stream(object):
>>                                win32file.FD_CLOSE)
>>                  try:
>>                      win32file.WSAEventSelect(self.socket,
>> -                                             self._read.hEvent,
>> +                                             self._wevent,
>>                                               read_flags)
>>                  except pywintypes.error as e:
>>                      vlog.err("failed to associate events with socket: %s"
>>                               % e.strerror)
>> -                poller.fd_wait(self._read.hEvent, ovs.poller.POLLIN)
>> +                poller.fd_wait(self._wevent, ovs.poller.POLLIN)
>>              else:
>>                  write_flags = (win32file.FD_WRITE |
>>                                 win32file.FD_CONNECT |
>>                                 win32file.FD_CLOSE)
>>                  try:
>>                      win32file.WSAEventSelect(self.socket,
>> -                                             self._write.hEvent,
>> +                                             self._wevent,
>>                                               write_flags)
>>                  except pywintypes.error as e:
>>                      vlog.err("failed to associate events with socket: %s"
>>                               % e.strerror)
>> -                poller.fd_wait(self._write.hEvent, ovs.poller.POLLOUT)
>> +                poller.fd_wait(self._wevent, ovs.poller.POLLOUT)
>>          else:
>>              if wait == Stream.W_RECV:
>>                  if self._read:
>> --
>> 2.10.0.windows.1
>> _______________________________________________
>> dev mailing list
>> dev at openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>



-- 
Russell Bryant


More information about the dev mailing list