#include "ido/servicegroupdbobject.h"
#include "ido/dbtype.h"
#include "ido/dbvalue.h"
-#include "icinga/servicegroup.h"
#include "base/objectlock.h"
#include "base/initialize.h"
#include <boost/foreach.hpp>
void ServiceGroupDbObject::StaticInitialize(void)
{
- ServiceGroup::OnMembersChanged.connect(&ServiceGroupDbObject::MembersChangedHandler);
+ ServiceGroup::OnMembersChanged.connect(boost::bind(&ServiceGroupDbObject::MembersChangedHandler, ServiceGroup::Ptr()));
}
Dictionary::Ptr ServiceGroupDbObject::GetConfigFields(void) const
void ServiceGroupDbObject::OnConfigUpdate(void)
{
- MembersChangedHandler();
+ ServiceGroup::Ptr group = static_pointer_cast<ServiceGroup>(GetObject());
+
+ MembersChangedHandler(group);
}
-void ServiceGroupDbObject::MembersChangedHandler(void)
+void ServiceGroupDbObject::MembersChangedHandler(const ServiceGroup::Ptr& sgfilter)
{
DbQuery query1;
query1.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
BOOST_FOREACH(const DynamicObject::Ptr& object, DynamicType::GetObjects("ServiceGroup")) {
ServiceGroup::Ptr sg = static_pointer_cast<ServiceGroup>(object);
+ if (sgfilter && sgfilter != sg)
+ continue;
+
BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
DbQuery query2;
query2.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
#define SERVICEGROUPDBOBJECT_H
#include "ido/dbobject.h"
+#include "icinga/servicegroup.h"
#include "base/dynamicobject.h"
namespace icinga
virtual void OnConfigUpdate(void);
private:
- static void MembersChangedHandler(void);
+ static void MembersChangedHandler(const ServiceGroup::Ptr& sgfilter);
};
}
#include "ido/usergroupdbobject.h"
#include "ido/dbtype.h"
#include "ido/dbvalue.h"
-#include "icinga/usergroup.h"
#include "base/objectlock.h"
#include "base/initialize.h"
#include "base/dynamictype.h"
void UserGroupDbObject::StaticInitialize(void)
{
- UserGroup::OnMembersChanged.connect(&UserGroupDbObject::MembersChangedHandler);
+ UserGroup::OnMembersChanged.connect(boost::bind(&UserGroupDbObject::MembersChangedHandler, UserGroup::Ptr()));
}
Dictionary::Ptr UserGroupDbObject::GetConfigFields(void) const
void UserGroupDbObject::OnConfigUpdate(void)
{
- MembersChangedHandler();
+ UserGroup::Ptr group = static_pointer_cast<UserGroup>(GetObject());
+
+ MembersChangedHandler(group);
}
-void UserGroupDbObject::MembersChangedHandler(void)
+void UserGroupDbObject::MembersChangedHandler(const UserGroup::Ptr& ugfilter)
{
DbQuery query1;
query1.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
BOOST_FOREACH(const DynamicObject::Ptr& object, DynamicType::GetObjects("UserGroup")) {
UserGroup::Ptr ug = static_pointer_cast<UserGroup>(object);
+ if (ugfilter && ugfilter != ug)
+ continue;
+
BOOST_FOREACH(const User::Ptr& user, ug->GetMembers()) {
DbQuery query2;
query2.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
#define USERGROUPDBOBJECT_H
#include "ido/dbobject.h"
+#include "icinga/usergroup.h"
#include "base/dynamicobject.h"
namespace icinga
virtual void OnConfigUpdate(void);
private:
- static void MembersChangedHandler(void);
+ static void MembersChangedHandler(const UserGroup::Ptr& ugfilter);
};
}