void PluginUtility::ExecuteCommand(const Command::Ptr& commandObj, const Checkable::Ptr& checkable,
const CheckResult::Ptr& cr, const MacroProcessor::ResolverList& macroResolvers,
- const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros,
+ const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros, int timeout,
const std::function<void(const Value& commandLine, const ProcessResult&)>& callback)
{
Value raw_command = commandObj->GetCommandLine();
Process::Ptr process = new Process(Process::PrepareCommand(command), envMacros);
- if (checkable->GetCheckTimeout().IsEmpty())
- process->SetTimeout(commandObj->GetTimeout());
- else
- process->SetTimeout(checkable->GetCheckTimeout());
-
+ process->SetTimeout(timeout);
process->SetAdjustPriority(true);
process->Run(std::bind(callback, command, _1));
public:
static void ExecuteCommand(const Command::Ptr& commandObj, const Checkable::Ptr& checkable,
const CheckResult::Ptr& cr, const MacroProcessor::ResolverList& macroResolvers,
- const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros,
+ const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros, int timeout,
const std::function<void(const Value& commandLine, const ProcessResult&)>& callback = std::function<void(const Value& commandLine, const ProcessResult&)>());
static ServiceState ExitStatusToState(int exitStatus);
resolvers.emplace_back("command", commandObj);
resolvers.emplace_back("icinga", IcingaApplication::GetInstance());
+ int timeout = commandObj->GetTimeout();
+
+ if (!checkable->GetCheckTimeout().IsEmpty())
+ timeout = checkable->GetCheckTimeout();
+
PluginUtility::ExecuteCommand(commandObj, checkable, checkable->GetLastCheckResult(),
- resolvers, resolvedMacros, useResolvedMacros,
+ resolvers, resolvedMacros, useResolvedMacros, timeout,
std::bind(&PluginCheckTask::ProcessFinishedHandler, checkable, cr, _1, _2));
if (!resolvedMacros || useResolvedMacros)
resolvers.emplace_back("command", commandObj);
resolvers.emplace_back("icinga", IcingaApplication::GetInstance());
+ int timeout = commandObj->GetTimeout();
+
PluginUtility::ExecuteCommand(commandObj, checkable, checkable->GetLastCheckResult(),
- resolvers, resolvedMacros, useResolvedMacros,
+ resolvers, resolvedMacros, useResolvedMacros, timeout,
std::bind(&PluginEventTask::ProcessFinishedHandler, checkable, _1, _2));
}
resolvers.emplace_back("command", commandObj);
resolvers.emplace_back("icinga", IcingaApplication::GetInstance());
+ int timeout = commandObj->GetTimeout();
+
PluginUtility::ExecuteCommand(commandObj, checkable, cr, resolvers,
- resolvedMacros, useResolvedMacros,
+ resolvedMacros, useResolvedMacros, timeout,
std::bind(&PluginNotificationTask::ProcessFinishedHandler, checkable, _1, _2));
}