]> granicus.if.org Git - icinga2/commitdiff
Allocate ConfigItemBuilder objects on the stack 5970/head
authorGunnar Beutner <gunnar.beutner@icinga.com>
Wed, 10 Jan 2018 16:20:33 +0000 (17:20 +0100)
committerGunnar Beutner <gunnar.beutner@icinga.com>
Thu, 11 Jan 2018 09:52:26 +0000 (10:52 +0100)
lib/cli/daemonutility.cpp
lib/config/configitembuilder.hpp
lib/config/vmops.hpp
lib/icinga/dependency-apply.cpp
lib/icinga/notification-apply.cpp
lib/icinga/scheduleddowntime-apply.cpp
lib/icinga/service-apply.cpp

index 02e31e272584b120bf0124857c97e6310352221b..432fe3d459adb7a06791f0b2eef0181a73fc1704 100644 (file)
@@ -148,11 +148,11 @@ bool DaemonUtility::ValidateConfigFiles(const std::vector<std::string>& configs,
        Type::Ptr appType = Type::GetByName(ScriptGlobal::Get("ApplicationType", &Empty));
 
        if (ConfigItem::GetItems(appType).empty()) {
-               ConfigItemBuilder::Ptr builder = new ConfigItemBuilder();
-               builder->SetType(appType);
-               builder->SetName("app");
-               builder->AddExpression(new ImportDefaultTemplatesExpression());
-               ConfigItem::Ptr item = builder->Compile();
+               ConfigItemBuilder builder;
+               builder.SetType(appType);
+               builder.SetName("app");
+               builder.AddExpression(new ImportDefaultTemplatesExpression());
+               ConfigItem::Ptr item = builder.Compile();
                item->Register();
        }
 
index a9f9ea5060fc1880c27c5e0bced00f52371fb263..2144bdbe2218467c45a06c38b3de7d88bfbdac80 100644 (file)
@@ -34,7 +34,7 @@ namespace icinga
  *
  * @ingroup config
  */
-class ConfigItemBuilder final : public Object
+class ConfigItemBuilder final
 {
 public:
        DECLARE_PTR_TYPEDEFS(ConfigItemBuilder);
index 4d8dd0e55f4942869b467e42692ea3aaf03670da..68b4b663b03a773db2079ad2e57e7d0b3257f1eb 100644 (file)
@@ -146,7 +146,7 @@ public:
        static inline Value NewObject(ScriptFrame& frame, bool abstract, const Type::Ptr& type, const String& name, const std::shared_ptr<Expression>& filter,
                const String& zone, const String& package, bool defaultTmpl, bool ignoreOnError, const std::map<String, std::unique_ptr<Expression> >& closedVars, const std::shared_ptr<Expression>& expression, const DebugInfo& debugInfo = DebugInfo())
        {
-               ConfigItemBuilder::Ptr item = new ConfigItemBuilder(debugInfo);
+               ConfigItemBuilder item{debugInfo};
 
                String checkName = name;
 
@@ -173,21 +173,21 @@ public:
                        BOOST_THROW_EXCEPTION(ScriptError(msgbuf.str(), debugInfo));
                }
 
-               item->SetType(type);
-               item->SetName(name);
+               item.SetType(type);
+               item.SetName(name);
 
                if (!abstract)
-                       item->AddExpression(new ImportDefaultTemplatesExpression());
-
-               item->AddExpression(new OwnedExpression(expression));
-               item->SetAbstract(abstract);
-               item->SetScope(EvaluateClosedVars(frame, closedVars));
-               item->SetZone(zone);
-               item->SetPackage(package);
-               item->SetFilter(filter);
-               item->SetDefaultTemplate(defaultTmpl);
-               item->SetIgnoreOnError(ignoreOnError);
-               item->Compile()->Register();
+                       item.AddExpression(new ImportDefaultTemplatesExpression());
+
+               item.AddExpression(new OwnedExpression(expression));
+               item.SetAbstract(abstract);
+               item.SetScope(EvaluateClosedVars(frame, closedVars));
+               item.SetZone(zone);
+               item.SetPackage(package);
+               item.SetFilter(filter);
+               item.SetDefaultTemplate(defaultTmpl);
+               item.SetIgnoreOnError(ignoreOnError);
+               item.Compile()->Register();
 
                return Empty;
        }
index 72d2aa915d672393375c2aa85a3d89f70b9a2a4e..d300b8cfeb0417e827bc41ad3e6a7db9a5215f22 100644 (file)
@@ -46,34 +46,34 @@ bool Dependency::EvaluateApplyRuleInstance(const Checkable::Ptr& checkable, cons
                << "Applying dependency '" << name << "' to object '" << checkable->GetName() << "' for rule " << di;
 #endif /* _DEBUG */
 
-       ConfigItemBuilder::Ptr builder = new ConfigItemBuilder(di);
-       builder->SetType(Dependency::TypeInstance);
-       builder->SetName(name);
-       builder->SetScope(frame.Locals->ShallowClone());
-       builder->SetIgnoreOnError(rule.GetIgnoreOnError());
+       ConfigItemBuilder builder{di};
+       builder.SetType(Dependency::TypeInstance);
+       builder.SetName(name);
+       builder.SetScope(frame.Locals->ShallowClone());
+       builder.SetIgnoreOnError(rule.GetIgnoreOnError());
 
        Host::Ptr host;
        Service::Ptr service;
        tie(host, service) = GetHostService(checkable);
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "parent_host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "child_host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "parent_host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "child_host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
 
        if (service)
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "child_service_name"), OpSetLiteral, MakeLiteral(service->GetShortName()), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "child_service_name"), OpSetLiteral, MakeLiteral(service->GetShortName()), di));
 
        String zone = checkable->GetZoneName();
 
        if (!zone.IsEmpty())
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
 
-       builder->AddExpression(new ImportDefaultTemplatesExpression());
+       builder.AddExpression(new ImportDefaultTemplatesExpression());
 
-       builder->AddExpression(new OwnedExpression(rule.GetExpression()));
+       builder.AddExpression(new OwnedExpression(rule.GetExpression()));
 
-       ConfigItem::Ptr dependencyItem = builder->Compile();
+       ConfigItem::Ptr dependencyItem = builder.Compile();
        dependencyItem->Register();
 
        return true;
index 9573315a4050ad37081ef86111eba9e659df9b4d..5e05ece3ba6369617f0b11fc03bb389f4c3bf39a 100644 (file)
@@ -46,33 +46,33 @@ bool Notification::EvaluateApplyRuleInstance(const Checkable::Ptr& checkable, co
                << "Applying notification '" << name << "' to object '" << checkable->GetName() << "' for rule " << di;
 #endif /* _DEBUG */
 
-       ConfigItemBuilder::Ptr builder = new ConfigItemBuilder(di);
-       builder->SetType(Notification::TypeInstance);
-       builder->SetName(name);
-       builder->SetScope(frame.Locals->ShallowClone());
-       builder->SetIgnoreOnError(rule.GetIgnoreOnError());
+       ConfigItemBuilder builder{di};
+       builder.SetType(Notification::TypeInstance);
+       builder.SetName(name);
+       builder.SetScope(frame.Locals->ShallowClone());
+       builder.SetIgnoreOnError(rule.GetIgnoreOnError());
 
        Host::Ptr host;
        Service::Ptr service;
        tie(host, service) = GetHostService(checkable);
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
 
        if (service)
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "service_name"), OpSetLiteral, MakeLiteral(service->GetShortName()), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "service_name"), OpSetLiteral, MakeLiteral(service->GetShortName()), di));
 
        String zone = checkable->GetZoneName();
 
        if (!zone.IsEmpty())
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
 
-       builder->AddExpression(new OwnedExpression(rule.GetExpression()));
+       builder.AddExpression(new OwnedExpression(rule.GetExpression()));
 
-       builder->AddExpression(new ImportDefaultTemplatesExpression());
+       builder.AddExpression(new ImportDefaultTemplatesExpression());
 
-       ConfigItem::Ptr notificationItem = builder->Compile();
+       ConfigItem::Ptr notificationItem = builder.Compile();
        notificationItem->Register();
 
        return true;
index 2c2ec4a14ff8bdd5e25b86e9876e66d8ac857b59..fb44018d05655c0d07f254becd6b171f10fc623a 100644 (file)
@@ -45,33 +45,33 @@ bool ScheduledDowntime::EvaluateApplyRuleInstance(const Checkable::Ptr& checkabl
                << "Applying scheduled downtime '" << rule.GetName() << "' to object '" << checkable->GetName() << "' for rule " << di;
 #endif /* _DEBUG */
 
-       ConfigItemBuilder::Ptr builder = new ConfigItemBuilder(di);
-       builder->SetType(ScheduledDowntime::TypeInstance);
-       builder->SetName(name);
-       builder->SetScope(frame.Locals->ShallowClone());
-       builder->SetIgnoreOnError(rule.GetIgnoreOnError());
+       ConfigItemBuilder builder{di};
+       builder.SetType(ScheduledDowntime::TypeInstance);
+       builder.SetName(name);
+       builder.SetScope(frame.Locals->ShallowClone());
+       builder.SetIgnoreOnError(rule.GetIgnoreOnError());
 
        Host::Ptr host;
        Service::Ptr service;
        tie(host, service) = GetHostService(checkable);
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
 
        if (service)
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "service_name"), OpSetLiteral, MakeLiteral(service->GetShortName()), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "service_name"), OpSetLiteral, MakeLiteral(service->GetShortName()), di));
 
        String zone = checkable->GetZoneName();
 
        if (!zone.IsEmpty())
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
 
-       builder->AddExpression(new OwnedExpression(rule.GetExpression()));
+       builder.AddExpression(new OwnedExpression(rule.GetExpression()));
 
-       builder->AddExpression(new ImportDefaultTemplatesExpression());
+       builder.AddExpression(new ImportDefaultTemplatesExpression());
 
-       ConfigItem::Ptr downtimeItem = builder->Compile();
+       ConfigItem::Ptr downtimeItem = builder.Compile();
        downtimeItem->Register();
 
        return true;
index d9a01c9808da96af57409ed9a72a84c3fb2d9b38..79d9a78fbfb905b0065866d462466e51215f8acf 100644 (file)
@@ -45,28 +45,28 @@ bool Service::EvaluateApplyRuleInstance(const Host::Ptr& host, const String& nam
                << "Applying service '" << name << "' to host '" << host->GetName() << "' for rule " << di;
 #endif /* _DEBUG */
 
-       ConfigItemBuilder::Ptr builder = new ConfigItemBuilder(di);
-       builder->SetType(Service::TypeInstance);
-       builder->SetName(name);
-       builder->SetScope(frame.Locals->ShallowClone());
-       builder->SetIgnoreOnError(rule.GetIgnoreOnError());
+       ConfigItemBuilder builder{di};
+       builder.SetType(Service::TypeInstance);
+       builder.SetName(name);
+       builder.SetScope(frame.Locals->ShallowClone());
+       builder.SetIgnoreOnError(rule.GetIgnoreOnError());
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "host_name"), OpSetLiteral, MakeLiteral(host->GetName()), di));
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "name"), OpSetLiteral, MakeLiteral(name), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "name"), OpSetLiteral, MakeLiteral(name), di));
 
        String zone = host->GetZoneName();
 
        if (!zone.IsEmpty())
-               builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
+               builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "zone"), OpSetLiteral, MakeLiteral(zone), di));
 
-       builder->AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
+       builder.AddExpression(new SetExpression(MakeIndexer(ScopeThis, "package"), OpSetLiteral, MakeLiteral(rule.GetPackage()), di));
 
-       builder->AddExpression(new OwnedExpression(rule.GetExpression()));
+       builder.AddExpression(new OwnedExpression(rule.GetExpression()));
 
-       builder->AddExpression(new ImportDefaultTemplatesExpression());
+       builder.AddExpression(new ImportDefaultTemplatesExpression());
 
-       ConfigItem::Ptr serviceItem = builder->Compile();
+       ConfigItem::Ptr serviceItem = builder.Compile();
        serviceItem->Register();
 
        return true;