Skip to content

Commit

Permalink
Removed obsolete code.
Browse files Browse the repository at this point in the history
  • Loading branch information
gunnarbeutner committed Jul 3, 2012
1 parent d3b4cc7 commit efff45c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 93 deletions.
101 changes: 13 additions & 88 deletions cib/service.cpp
Expand Up @@ -107,101 +107,26 @@ Dictionary::Ptr Service::GetCheckers(void) const
return value;
}

vector<Service> Service::GetParents(void) const
bool Service::IsReachable(void) const
{
vector<Service> parents;

Dictionary::Ptr dependencies = GetDependencies();
if (dependencies) {
Dictionary::Iterator it;
for (it = dependencies->Begin(); it != dependencies->End(); it++)
parents.push_back(Service::GetByName(it->second));
}
return parents;
}

vector<Service> Service::GetChildren(void) const
{
vector<Service> children;

UpdateDependencyCache();

Dictionary::Ptr childrenCache;
GetConfigObject()->GetTag("dependency_children", &childrenCache);

if (childrenCache) {
if (dependencies) {
Dictionary::Iterator it;
for (it = childrenCache->Begin(); it != childrenCache->End(); it++)
children.push_back(Service::GetByName(it->second));
}

return children;
}

void Service::UpdateDependencyCache(void)
{
static long cacheTx = 0;

if (m_DependencyCacheValid)
return;

cacheTx++;
for (it = dependencies->Begin(); it != dependencies->End(); it++) {
Service service = Service::GetByName(it->second);

ConfigObject::TMap::Range range = ConfigObject::GetObjects("service");
ConfigObject::TMap::Iterator it;
for (it = range.first; it != range.second; it++) {
Service child = it->second;
/* ignore ourselves */
if (service.GetName() == GetName())
continue;

vector<Service> parents = child.GetParents();

vector<Service>::iterator st;
for (st = parents.begin(); st != parents.end(); st++) {
Service parent = *st;

long tx = 0;
parent.GetConfigObject()->GetTag("dependency_cache_tx", &tx);

Dictionary::Ptr children;

/* rather than resetting the dependency dictionary in a separate loop we use the cache_tx
* tag to check if the dictionary is from this cache update run. */
if (tx != cacheTx) {
children = boost::make_shared<Dictionary>();
parent.GetConfigObject()->SetTag("dependency_children", children);
parent.GetConfigObject()->SetTag("dependency_cache_tx", cacheTx);
} else {
parent.GetConfigObject()->GetTag("dependency_children", &children);
assert(children);
}

children->AddUnnamedProperty(child.GetName());
}
}

m_DependencyCacheValid = true;
}

void Service::InvalidateDependencyCache(void)
{
m_DependencyCacheValid = false;
}

bool Service::IsReachable(void) const
{
vector<Service> parents = GetParents();

vector<Service>::iterator it;
for (it = parents.begin(); it != parents.end(); it++) {
/* ignore ourselves */
if (it->GetName() == GetName())
continue;

if (!it->IsReachable())
return false;
if (!service.IsReachable())
return false;

if (it->GetStateType() == StateTypeHard && it->GetState() != StateOK &&
it->GetState() != StateWarning)
return false;
if (service.GetStateType() == StateTypeHard && service.GetState() != StateOK &&
service.GetState() != StateWarning)
return false;
}
}

return true;
Expand Down
5 changes: 0 additions & 5 deletions cib/service.h
Expand Up @@ -44,11 +44,6 @@ class I2_CIB_API Service : public ConfigObjectAdapter
Dictionary::Ptr GetGroups(void) const;
Dictionary::Ptr GetCheckers(void) const;

vector<Service> GetParents(void) const;
vector<Service> GetChildren(void) const;
static void UpdateDependencyCache(void);
static void InvalidateDependencyCache(void);

bool IsReachable(void) const;

void SetNextCheck(time_t nextCheck);
Expand Down

0 comments on commit efff45c

Please sign in to comment.