def readable(self, timeout=2):
        """
        Checks whether self.recv() will block or not.
        Optional arguments:
        * timeout=1 - Wait for the socket to be readable,
            for timeout amount of time.
        """
        with self.lock:
            if len(self._buffer) > self._index:
                return True
            else:
                if self._select([self._socket], [], [], timeout)[0] == []:
                    return False
                else:
                    return True