<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def start(self, request=None):
 """Starts processing the request for this protocol consumer. There is no need to override this method, implement :meth:`start_request` instead. If either :attr:`connection` or :attr:`transport` are missing, a :class:`RuntimeError` occurs. For server side consumer, this method simply fires the ``pre_request`` event. """

        self.connection.processed += 1
        self.producer.requests_processed += 1
        self.event('post_request').bind(self.finished_reading)
        self.request = request or self.create_request()
        try:
            self.fire_event('pre_request')
        except AbortEvent:
            if self._loop.get_debug():
                self.producer.logger.debug('Abort request %s', request)
        else:
            self.start_request()