diff --git a/lib/ido/hostgroupdbobject.cpp b/lib/ido/hostgroupdbobject.cpp index 3e084452f..a90079850 100644 --- a/lib/ido/hostgroupdbobject.cpp +++ b/lib/ido/hostgroupdbobject.cpp @@ -22,16 +22,24 @@ #include "ido/dbvalue.h" #include "icinga/hostgroup.h" #include "base/objectlock.h" +#include "base/initialize.h" +#include "base/logger_fwd.h" #include using namespace icinga; REGISTER_DBTYPE(HostGroup, "hostgroup", 3, "hostgroup_object_id", HostGroupDbObject); +INITIALIZE_ONCE(HostGroupDbObject, &HostGroupDbObject::StaticInitialize); HostGroupDbObject::HostGroupDbObject(const DbType::Ptr& type, const String& name1, const String& name2) : DbObject(type, name1, name2) { } +void HostGroupDbObject::StaticInitialize(void) +{ + HostGroup::OnMembersChanged.connect(&HostGroupDbObject::MembersChangedHandler); +} + Dictionary::Ptr HostGroupDbObject::GetConfigFields(void) const { Dictionary::Ptr fields = boost::make_shared(); @@ -46,3 +54,13 @@ Dictionary::Ptr HostGroupDbObject::GetStatusFields(void) const { return Empty; } + +void HostGroupDbObject::OnConfigUpdate(void) +{ + MembersChangedHandler(); +} + +void HostGroupDbObject::MembersChangedHandler(void) +{ + Log(LogWarning, "ido", "MOO"); +} diff --git a/lib/ido/hostgroupdbobject.h b/lib/ido/hostgroupdbobject.h index c9ce9a7ee..a09399045 100644 --- a/lib/ido/hostgroupdbobject.h +++ b/lib/ido/hostgroupdbobject.h @@ -38,8 +38,16 @@ public: HostGroupDbObject(const DbType::Ptr& type, const String& name1, const String& name2); + static void StaticInitialize(void); + virtual Dictionary::Ptr GetConfigFields(void) const; virtual Dictionary::Ptr GetStatusFields(void) const; + +protected: + virtual void OnConfigUpdate(void); + +private: + static void MembersChangedHandler(void); }; }