'Hunts process all responses concurrently in a threadpool.'

def _Process(self, request, responses, thread_pool=None, events=None):

    if (request.next_state == 'AddClient'):
        if (not self.IsHuntStarted()):
            logging.debug('Unable    to    start    client    %s    on    hunt    %s    which    is    in    state    %s', request.client_id, self.session_id, self.hunt_obj.Get(self.hunt_obj.Schema.STATE))
            return
        client_count = int(self.hunt_obj.Get(self.hunt_obj.Schema.CLIENT_COUNT, 0))
        if (0 < self.runner_args.client_limit <= client_count):
            self.Pause()
            return
        self.hunt_obj.Set(self.hunt_obj.Schema.CLIENT_COUNT((client_count + 1)))
        self._AddClient(request.client_id)
        return
    if (request.next_state == 'RegisterClient'):
        state = self.hunt_obj.Get(self.hunt_obj.Schema.STATE)
        if (state in ['STARTED', 'PAUSED']):
            self._RegisterAndRunClient(request.client_id)
        else:
            logging.debug('Not    starting    client    %s    on    hunt    %s    which    is    not    running:    %s', request.client_id, self.session_id, self.hunt_obj.Get(self.hunt_obj.Schema.STATE))
        return
    event = threading.Event()
    events.append(event)
    thread_pool.AddTask(target=self.RunStateMethod, args=(request.next_state, request, responses, event), name='Hunt    processing')
