def add_writer(self, fd, callback, *args): if not isinstance(fd, int): fd = fd.fileno() self.remove_writer(fd) s = GLib.unix_fd_source_new(fd, GLib.IO_OUT) assert fd not in self._writers self._writers[fd] = GLibHandle(self, s, True, callback, args)
def add_reader(self, fd, callback, *args): if not isinstance(fd, int): fd = fd.fileno() self.remove_reader(fd) s = GLib.unix_fd_source_new(fd, GLib.IO_IN) assert fd not in self._readers self._readers[fd] = GLibHandle( loop=self, source=s, repeat=True, callback=callback, args=args)
def select_setup_old(self): """ The older implementation using GLib.Source.add_poll() """ rlist, wlist, xlist = self.select_args() fds = set(rlist + wlist + xlist) assert len(fds) == 1 fd = next(iter(fds)) condition = GLib.IOCondition(0) if fd in rlist: condition |= GLib.IOCondition.IN if fd in wlist: condition |= GLib.IOCondition.OUT if fd in xlist: condition |= GLib.IOCondition.ERR source = GLib.unix_fd_source_new(fd, condition) source.set_callback(self.glib_select_callback_old, (fd, rlist, wlist, xlist)) source.attach(self.context) self.source = source