* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} namespace Icinga\Module\Monitoring\Backend; use Icinga\Protocol\Statusdat as StatusdatProtocol; /** * Class Statusdat * @package Icinga\Backend */ class Statusdat extends AbstractBackend { /** * @var null */ private $reader = null; /** * */ public function init() { $this->reader = new StatusdatProtocol\Reader($this->config); } /** * @return null */ public function getReader() { return $this->reader; } /** * @param array $filter * @param array $flags * @return mixed */ public function listServices($filter = array(), $flags = array()) { $query = $this->select()->from("servicelist"); return $query->fetchAll(); } /** * @param $host * @return MonitoringObjectList|null */ public function fetchHost($host, $fetchAll = false) { $objs = & $this->reader->getObjects(); if (!isset($objs["host"][$host])) { return null; } $result = array($objs["host"][$host]); return new MonitoringObjectList( $result, new StatusdatHostView($this->reader) ); } /** * @param $host * @param $service * @return MonitoringObjectList|null */ public function fetchService($host, $service, $fetchAll = false) { $idxName = $host . ";" . $service; $objs = & $this->reader->getObjects(); if (!isset($objs["service"][$idxName])) { return null; } $result = array($objs["service"][$idxName]); return new MonitoringObjectList( $result, new StatusdatServiceView($this->reader) ); } }