<?php

use Psr\Log\LoggerInterface;

if (!class_exists('MessageQueue')) {
    return;
}

class SolrReindexMessageHandler extends SolrReindexImmediateHandler
{
    /**
     * The MessageQueue to use when processing updates
     * @config
     * @var string
     */
    private static $reindex_queue = "search_indexing";

    public function triggerReindex(LoggerInterface $logger, $batchSize, $taskName, $classes = null)
    {
        $queue = Config::inst()->get(__CLASS__, 'reindex_queue');

        $logger->info('Queuing message');
        MessageQueue::send(
            $queue,
            new MethodInvocationMessage('SolrReindexMessageHandler', 'run_reindex', $batchSize, $taskName, $classes)
        );
    }

    /**
     * Entry point for message queue
     *
     * @param int $batchSize
     * @param string $taskName
     * @param array|string|null $classes
     */
    public static function run_reindex($batchSize, $taskName, $classes = null)
    {
        // @todo Logger for message queue?
        $logger = Injector::inst()->createWithArgs('Monolog\Logger', array(strtolower(get_class())));
        
        $inst = Injector::inst()->get(get_class());
        $inst->runReindex($logger, $batchSize, $taskName, $classes);
    }
}