| # Copyright 1999-2009 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| from _emerge.AsynchronousTask import AsynchronousTask |
| from _emerge.PollConstants import PollConstants |
| class AbstractPollTask(AsynchronousTask): |
| |
| __slots__ = ("scheduler",) + \ |
| ("_registered",) |
| |
| _bufsize = 4096 |
| _exceptional_events = PollConstants.POLLERR | PollConstants.POLLNVAL |
| _registered_events = PollConstants.POLLIN | PollConstants.POLLHUP | \ |
| _exceptional_events |
| |
| def _unregister(self): |
| raise NotImplementedError(self) |
| |
| def _unregister_if_appropriate(self, event): |
| if self._registered: |
| if event & self._exceptional_events: |
| self._unregister() |
| self.cancel() |
| elif event & PollConstants.POLLHUP: |
| self._unregister() |
| self.wait() |
| |