<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def xread(self, streams, timeout=0, count=None, latest_ids=None):
 """Perform a blocking read on the given stream :raises ValueError: if the length of streams and latest_ids do not match """

        args = self._xread(streams, timeout, count, latest_ids)
        fut = self.execute(b'XREAD', *args)
        return wait_convert(fut, parse_messages_by_stream)