#include #include #include "i2-icinga.h" using namespace icinga; using std::cout; using std::endl; IcingaApplication::IcingaApplication(void) { m_ConnectionManager = new_object(); } int IcingaApplication::Main(const vector& args) { GetConfigHive()->OnObjectCreated.bind(bind_weak(&IcingaApplication::ConfigObjectCreatedHandler, shared_from_this())); GetConfigHive()->OnObjectRemoved.bind(bind_weak(&IcingaApplication::ConfigObjectRemovedHandler, shared_from_this())); ConfigObject::RefType fileComponentConfig = new_object(); fileComponentConfig->SetName("configfilecomponent"); fileComponentConfig->SetType("component"); fileComponentConfig->SetProperty("filename", "icinga.conf"); GetConfigHive()->AddObject(fileComponentConfig); RunEventLoop(); return 0; } ConnectionManager::RefType IcingaApplication::GetConnectionManager(void) { return m_ConnectionManager; } int IcingaApplication::ConfigObjectCreatedHandler(ConfigHiveEventArgs::RefType ea) { if (ea->ConfigObject->GetType() == "component") { LoadComponent(ea->ConfigObject->GetName()); } return 0; } int IcingaApplication::ConfigObjectRemovedHandler(ConfigHiveEventArgs::RefType ea) { if (ea->ConfigObject->GetType() == "component") { UnloadComponent(ea->ConfigObject->GetName()); } return 0; } SET_START_CLASS(icinga::IcingaApplication);