code: def dataReceived(self, data):
          
          size = len(self._buffer) + len(data)
          if size > self.MAX_LENGTH:
              self.lengthLimitExceeded(size)
          self._buffer += data
  
          start = 0
          for match in self._pattern.finditer(self._buffer):
              # The start of the sentinel marks the end of the response.
              end = match.start()
              tag = int(match.group(1))
              self.responseReceived(self._buffer[start:end], tag)
  
              # Advance start position to the beginning of the next line
              start = match.end() + 1
  
          if start:
              self._buffer = self._buffer[start:]
docs: Parses chunks of bytes into responses.
  
          Whenever a complete response is received, this method extracts its
          payload and calls L{responseReceived} to process it.
  
          @param data: A chunk of data representing a (possibly partial) response
          @type data: C{bytes}