*/
require_once "lib/autoload.php";
$status = -1;
$elapsed = microtime(true);
try {
    $config = dirname(__FILE__) . "/logmon.conf.php";
    $requiredConfigs = array($config);
    CheckConfig::configs($requiredConfigs);
    require_once $config;
    $requiredExtensions = array("mbstring", "pcre", "PDO");
    CheckConfig::extensions($requiredExtensions);
    mb_internal_encoding("UTF-8");
    Options::setDebug(DEBUG || array_search("--debug", $argv));
    Options::setPretend(array_search("--pretend", $argv));
    Options::setVerbose(Options::debug() || Options::pretend() || array_search("--verbose", $argv));
    Log::open(__FILE__, true, Options::verbose(), Options::debug());
    Log::notice(sprintf("Running '%s'...", implode(" ", $argv)));
    $monitor = Monitor::create(dirname(__FILE__) . "/monitor");
    if ($monitor !== false) {
        $sources = $monitor->getEnabledSources();
        $dbh = new DBH(DBDSN, DBUSER, DBPASS);
        $processor = new Processor($dbh);
        foreach ($sources as $source) {
            $processor->process($monitor, $source);
        }
        $processor->discard(EVENT_DISCARD_THRESHOLD);
        $status = 0;
    } else {
        $status = 1;
    }
} catch (Exception $e) {
    while ($select->fetch(PDO::FETCH_BOUND) !== false) {
        switch ($typeid) {
            case MonitorEvent::TYPEID_GRANTED:
                $grantedCount = $count;
                break;
            case MonitorEvent::TYPEID_DENIED:
                $deniedCount = $count;
                break;
            case MonitorEvent::TYPEID_ERROR:
                $errorCount = $count;
                break;
            default:
                Log::warning("Unknown typeid {$typeid} encountered");
        }
    }
    print "GRANTED:{$grantedCount} DENIED:{$deniedCount} ERROR:{$errorCount}";
    if (Options::verbose()) {
        print "\n";
    }
    $status = 0;
} catch (Exception $e) {
    Log::err(sprintf("Cacti data generation failed with exception: %s\nDetails: %s", $e->getMessage(), $e));
    $status = 1;
}
if (isset($dbh)) {
    $dbh->close();
}
$elapsed = round(microtime(true) - $elapsed, 3);
Log::notice("Cacti data generation finished with status '{$status}' (Total processing time: {$elapsed} s)");
Log::close();
exit($status);