OnQuery(query2);
m_LastConfigUpdate = Utility::GetTime();
+
+ OnConfigUpdate();
}
void DbObject::SendStatusUpdate(void)
OnQuery(query2);
m_LastStatusUpdate = Utility::GetTime();
+
+ OnStatusUpdate();
}
double DbObject::GetLastConfigUpdate(void) const
return false;
}
+void DbObject::OnConfigUpdate(void)
+{
+ /* Default handler does nothing. */
+}
+
+void DbObject::OnStatusUpdate(void)
+{
+ /* Default handler does nothing. */
+}
+
DbObject::Ptr DbObject::GetOrCreateByObject(const DynamicObject::Ptr& object)
{
DbObject::Ptr dbobj = static_pointer_cast<DbObject>(object->GetExtension("DbObject"));
return;
OnUnregistered(dbobj);
- //dbobj->SendUpdate(DbObjectRemoved);
{
ObjectLock olock(object);
virtual bool IsConfigAttribute(const String& attribute) const;
virtual bool IsStatusAttribute(const String& attribute) const;
+ virtual void OnConfigUpdate(void);
+ virtual void OnStatusUpdate(void);
+
private:
String m_Name1;
String m_Name2;
bool ServiceDbObject::IsStatusAttribute(const String& attribute) const
{
return (attribute == "last_result");
+}
+
+void ServiceDbObject::OnConfigUpdate(void)
+{
+ Service::Ptr service = static_pointer_cast<Service>(GetObject());
+ Host::Ptr host = service->GetHost();
+
+ if (!host)
+ return;
+
+ if (host->GetHostCheckService() != service)
+ return;
+
+ DbObject::Ptr dbobj = GetOrCreateByObject(host);
+
+ if (!dbobj)
+ return;
+
+ dbobj->SendConfigUpdate();
+}
+
+void ServiceDbObject::OnStatusUpdate(void)
+{
+ Service::Ptr service = static_pointer_cast<Service>(GetObject());
+ Host::Ptr host = service->GetHost();
+
+ if (!host)
+ return;
+
+ if (host->GetHostCheckService() != service)
+ return;
+
+ DbObject::Ptr dbobj = GetOrCreateByObject(host);
+
+ if (!dbobj)
+ return;
+
+ dbobj->SendStatusUpdate();
}
\ No newline at end of file
virtual Dictionary::Ptr GetConfigFields(void) const;
virtual Dictionary::Ptr GetStatusFields(void) const;
+protected:
virtual bool IsStatusAttribute(const String& attribute) const;
+
+ virtual void OnConfigUpdate(void);
+ virtual void OnStatusUpdate(void);
+
};
}