'Add a FileDescriptor for notification of data available to read.'

def addReader(self, reader):

    if (reader in self._readers):
        return
    fd = reader.fileno()
    self._readers[reader] = fd
    if (fd in self._fds):
        (_, writer) = self._fds[fd]
        self._fds[fd] = (reader, writer)
        if writer:
            self._io_loop.update_handler(fd, (IOLoop.READ | IOLoop.WRITE))
    else:
        with NullContext():
            self._fds[fd] = (reader, None)
            self._io_loop.add_handler(fd, self._invoke_callback, IOLoop.READ)
