]> granicus.if.org Git - icinga2/commitdiff
Fix order for startup events.
authorGunnar Beutner <gunnar@beutner.name>
Thu, 29 Aug 2013 17:05:06 +0000 (19:05 +0200)
committerGunnar Beutner <gunnar@beutner.name>
Thu, 29 Aug 2013 17:05:06 +0000 (19:05 +0200)
lib/base/dynamicobject.cpp
lib/base/dynamicobject.h
lib/config/configitem.cpp

index 406cbff4d24adc4819babe255bc45f413a194af9..683d0fde5983c2ed1106b2c06a3a11153a30b4f8 100644 (file)
@@ -73,12 +73,6 @@ void DynamicObject::Deserialize(const Dictionary::Ptr& update, int attributeType
                ObjectLock olock(this);
                InternalDeserialize(update, attributeTypes);
        }
-
-       if (attributeTypes & Attribute_Config)
-               OnConfigLoaded();
-
-       if (attributeTypes & Attribute_State)
-               OnStateLoaded();
 }
 
 void DynamicObject::InternalSerialize(const Dictionary::Ptr& bag, int attributeTypes) const
index 204e0c0e3ec001fb644c75085fc8b0ab30c8be95..44531289d2ffdb71d40f506684940f341ff9fe4c 100644 (file)
@@ -82,6 +82,9 @@ public:
        virtual void Start(void);
        virtual void Stop(void);
 
+       virtual void OnConfigLoaded(void);
+       virtual void OnStateLoaded(void);
+
        template<typename T>
        static shared_ptr<T> GetObject(const String& name)
        {
@@ -102,9 +105,6 @@ protected:
        virtual void InternalSerialize(const Dictionary::Ptr& bag, int attributeTypes) const;
        virtual void InternalDeserialize(const Dictionary::Ptr& bag, int attributeTypes);
 
-       virtual void OnConfigLoaded(void);
-       virtual void OnStateLoaded(void);
-
 private:
        String m_Name;
        String m_Type;
index ebca955d93b700f1888e77babeb61539e30ba877..94b7e4015fb33c9cdf5f3f2a57736630df90f0fd 100644 (file)
@@ -275,9 +275,17 @@ void ConfigItem::ActivateItems(void)
                        objects.push_back(object);
        }
 
+       BOOST_FOREACH(const DynamicObject::Ptr& object, objects) {
+               object->OnConfigLoaded();
+       }
+
        /* restore the previous program state */
        DynamicObject::RestoreObjects(Application::GetStatePath());
 
+       BOOST_FOREACH(const DynamicObject::Ptr& object, objects) {
+               object->OnStateLoaded();
+       }
+
        BOOST_FOREACH(const DynamicObject::Ptr& object, objects) {
                Log(LogDebug, "config", "Activating object '" + object->GetName() + "' of type '" + object->GetType()->GetName() + "'");
                object->Start();