<?php

/**
 * Job listener for the Gearman package.
 *
 * @author  Jose F. D'Silva
 * @package  Gearman
 */
use Monolog\Logger;
require_once 'init.php';
$listener = new Common_Gearman_Listener();
$logger = $listener->getLogger();
$listener->setJobHandler(function (GearmanJob $gearmanJob) use($logger) {
    $s = sprintf("Fetched job [handle: %s, uniqueId: %s]", $gearmanJob->handle(), $gearmanJob->unique());
    $logger->log(Logger::INFO, $s);
    $jobWrapper = new Common_Gearman_JobWrapper($gearmanJob, $logger);
    $task = $jobWrapper->getJob();
    if ($task) {
        $task->setLogger($logger);
        $task->setUniqueId($gearmanJob->unique());
        return $task->handle();
    }
    $s = sprintf("%s[uniqId: %s] is not a valid job instance. Job ignored.", $gearmanJob->handle(), $gearmanJob->unique());
    $logger->log(Logger::ERROR, $s);
})->listen();