IcingaObject: add resolve-cache
This commit is contained in:
parent
ff855703df
commit
922a6d25c0
|
@ -54,6 +54,8 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||||
|
|
||||||
private $shouldBeRemoved = false;
|
private $shouldBeRemoved = false;
|
||||||
|
|
||||||
|
private $resolveCache = array();
|
||||||
|
|
||||||
public function propertyIsBoolean($property)
|
public function propertyIsBoolean($property)
|
||||||
{
|
{
|
||||||
return array_key_exists($property, $this->booleans);
|
return array_key_exists($property, $this->booleans);
|
||||||
|
@ -391,8 +393,33 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||||
return $res['_ORIGINS_'];
|
return $res['_ORIGINS_'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function hasResolveCached($what)
|
||||||
|
{
|
||||||
|
return array_key_exists($what, $this->resolveCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function & getResolveCached($what)
|
||||||
|
{
|
||||||
|
return $this->resolveCache[$what];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function storeResolvedCache($what, $vals)
|
||||||
|
{
|
||||||
|
$this->resolveCache[$what] = $vals;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function invalidateResolveCache()
|
||||||
|
{
|
||||||
|
$this->resolveCache = array();
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
protected function resolve($what)
|
protected function resolve($what)
|
||||||
{
|
{
|
||||||
|
if ($this->hasResolveCached($what)) {
|
||||||
|
return $this->getResolveCached($what);
|
||||||
|
}
|
||||||
|
|
||||||
$vals = array();
|
$vals = array();
|
||||||
$vals['_MERGED_'] = (object) array();
|
$vals['_MERGED_'] = (object) array();
|
||||||
$vals['_INHERITED_'] = (object) array();
|
$vals['_INHERITED_'] = (object) array();
|
||||||
|
@ -431,6 +458,8 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||||
$vals['_MERGED_']->$key = $value;
|
$vals['_MERGED_']->$key = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->storeResolvedCache($what, $vals);
|
||||||
|
|
||||||
return $vals;
|
return $vals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1033,6 +1062,7 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||||
$props['vars'] = $this->getVars();
|
$props['vars'] = $this->getVars();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->supportsImports()) {
|
if ($this->supportsImports()) {
|
||||||
if ($resolved) {
|
if ($resolved) {
|
||||||
$props['imports'] = array();
|
$props['imports'] = array();
|
||||||
|
|
Loading…
Reference in New Issue