]> granicus.if.org Git - icinga2/commitdiff
Use GetHostService() instead of casts
authorGunnar Beutner <gunnar.beutner@icinga.com>
Tue, 21 Mar 2017 09:21:51 +0000 (10:21 +0100)
committerMichael Friedrich <michael.friedrich@icinga.com>
Wed, 29 Mar 2017 08:17:03 +0000 (10:17 +0200)
refs #4991

lib/redis/rediswriter-config.cpp

index 876b59587030a4f3db92c9913162b53c79f78658..ddaee058eb1266b3f6546ba55e236a8be0105f2a 100644 (file)
@@ -176,12 +176,19 @@ void RedisWriter::SendConfigUpdate(const ConfigObject::Ptr& object, const String
 
        checkSum->Set("name_checksum", CalculateCheckSumString(object->GetName()));
 
-       if (object->GetReflectionType() == Host::TypeInstance) {
-               Host::Ptr host = static_pointer_cast<Host>(object);
-               checkSum->Set("groups_checksum", CalculateCheckSumGroups(host->GetGroups()));
-       } else if (object->GetReflectionType() == Service::TypeInstance) {
-               Service::Ptr service = static_pointer_cast<Service>(object);
-               checkSum->Set("groups_checksum", CalculateCheckSumGroups(service->GetGroups()));
+       // TODO: move this elsewhere
+       Checkable::Ptr checkable = dynamic_pointer_cast<Checkable>(object);
+
+       if (checkable) {
+               Host::Ptr host;
+               Service::Ptr service;
+
+               tie(host, service) = GetHostService(checkable);
+
+               if (service)
+                       checkSum->Set("groups_checksum", CalculateCheckSumGroups(service->GetGroups()));
+               else
+                       checkSum->Set("groups_checksum", CalculateCheckSumGroups(host->GetGroups()));
        }
 
        String checkSumBody = JsonEncode(checkSum);