code: def build_inbound_messages(self, break_on_empty=False, to_tuple=False,
                                 auto_decode=True):
          
          self.check_for_errors()
          while not self.is_closed:
              message = self._build_message(auto_decode=auto_decode)
              if not message:
                  self.check_for_errors()
                  sleep(IDLE_WAIT)
                  if break_on_empty and not self._inbound:
                      break
                  continue
              if to_tuple:
                  yield message.to_tuple()
                  continue
              yield message
docs: Build messages in the inbound queue.
  
          :param bool break_on_empty: Should we break the loop when there are
                                      no more messages in our inbound queue.
  
                                      This does not guarantee that the upstream
                                      queue is empty, as it's possible that if
                                      messages are consumed faster than
                                      delivered, the inbound queue will then be
                                      emptied and the consumption will be broken.
          :param bool to_tuple: Should incoming messages be converted to a
                                tuple before delivery.
          :param bool auto_decode: Auto-decode strings when possible.
  
          :raises AMQPChannelError: Raises if the channel encountered an error.
          :raises AMQPConnectionError: Raises if the connection
                                       encountered an error.
  
          :rtype: :py:class:`generator`