commit:     2495fe6ff060e2ed8ee54e08a4dec132de1f4984
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 30 05:52:07 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Apr 30 06:20:01 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=2495fe6f

PipeLogger: add_reader asyncio compat (bug 654382)

Use add_reader for asyncio compatibility.

Bug: https://bugs.gentoo.org/654382

 pym/portage/util/_async/PipeLogger.py | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/pym/portage/util/_async/PipeLogger.py 
b/pym/portage/util/_async/PipeLogger.py
index 02de74b16..61000271d 100644
--- a/pym/portage/util/_async/PipeLogger.py
+++ b/pym/portage/util/_async/PipeLogger.py
@@ -21,7 +21,7 @@ class PipeLogger(AbstractPollTask):
        """
 
        __slots__ = ("input_fd", "log_file_path", "stdout_fd") + \
-               ("_log_file", "_log_file_real", "_reg_id")
+               ("_log_file", "_log_file_real")
 
        def _start(self):
 
@@ -57,8 +57,7 @@ class PipeLogger(AbstractPollTask):
                                fcntl.fcntl(fd, fcntl.F_SETFD,
                                        fcntl.fcntl(fd, fcntl.F_GETFD) | 
fcntl.FD_CLOEXEC)
 
-               self._reg_id = self.scheduler.io_add_watch(fd,
-                       self._registered_events, self._output_handler)
+               self.scheduler.add_reader(fd, self._output_handler, fd)
                self._registered = True
 
        def _cancel(self):
@@ -66,14 +65,14 @@ class PipeLogger(AbstractPollTask):
                if self.returncode is None:
                        self.returncode = self._cancelled_returncode
 
-       def _output_handler(self, fd, event):
+       def _output_handler(self, fd):
 
                background = self.background
                stdout_fd = self.stdout_fd
                log_file = self._log_file 
 
                while True:
-                       buf = self._read_buf(fd, event)
+                       buf = self._read_buf(fd, None)
 
                        if buf is None:
                                # not a POLLIN event, EAGAIN, etc...
@@ -124,20 +123,13 @@ class PipeLogger(AbstractPollTask):
                                        log_file.write(buf)
                                        log_file.flush()
 
-               self._unregister_if_appropriate(event)
-
-               return True
-
        def _unregister(self):
-
-               if self._reg_id is not None:
-                       self.scheduler.source_remove(self._reg_id)
-                       self._reg_id = None
-
                if self.input_fd is not None:
                        if isinstance(self.input_fd, int):
+                               self.scheduler.remove_reader(self.input_fd)
                                os.close(self.input_fd)
                        else:
+                               
self.scheduler.remove_reader(self.input_fd.fileno())
                                self.input_fd.close()
                        self.input_fd = None
 

Reply via email to