code: def GetMessages(self, soft_size_limit=None):
      
      with self._lock:
        ret = rdf_flows.MessageList()
        ret_size = 0
        for message in self._Generate():
          self._total_size -= len(message)
          ret.job.append(rdf_flows.GrrMessage.FromSerializedString(message))
          ret_size += len(message)
          if soft_size_limit is not None and ret_size > soft_size_limit:
            break
  
        return ret
docs: Retrieves and removes the messages from the queue.
  
      Args:
        soft_size_limit: int If there is more data in the queue than
          soft_size_limit bytes, the returned list of messages will be
          approximately this large. If None (default), returns all messages
          currently on the queue.
  
      Returns:
        rdf_flows.MessageList A list of messages that were .Put on the queue
        earlier.