'Returns False if we should stop reading for now'

def _handleRead(self, rc, data, evt):

    if self.disconnected:
        return False
    if ((not (rc or data)) or (rc in (errno.WSAEDISCON, ERROR_HANDLE_EOF))):
        self.reactor.removeActiveHandle(self)
        self.readConnectionLost(failure.Failure(main.CONNECTION_DONE))
        return False
    elif rc:
        self.connectionLost(failure.Failure(error.ConnectionLost(('read    error    --    %s    (%s)' % (errno.errorcode.get(rc, 'unknown'), rc)))))
        return False
    else:
        assert (self._readSize == 0)
        assert (self._readNextBuffer == 0)
        self._readSize = data
        return self._dispatchData()
