olock.Unlock();
/* Update macros - these are used by event handlers and notifications. */
- cr->Set("macros", CalculateAllMacros());
+ cr->Set("macros", CalculateAllMacros(cr));
cr->Seal();
/**
* @threadsafety Always.
*/
-Dictionary::Ptr Service::CalculateDynamicMacros(void) const
+Dictionary::Ptr Service::CalculateDynamicMacros(const Dictionary::Ptr& crOverride) const
{
Dictionary::Ptr macros = boost::make_shared<Dictionary>();
cr = GetLastCheckResult();
}
+ if (crOverride)
+ cr = crOverride;
+
if (cr) {
- ASSERT(cr->IsSealed());
+ ASSERT(crOverride || cr->IsSealed());
macros->Set("SERVICELATENCY", Service::CalculateLatency(cr));
macros->Set("SERVICEEXECUTIONTIME", Service::CalculateExecutionTime(cr));
return macros;
}
-Dictionary::Ptr Service::CalculateAllMacros(void) const
+Dictionary::Ptr Service::CalculateAllMacros(const Dictionary::Ptr& crOverride) const
{
vector<Dictionary::Ptr> macroDicts;
macroDicts.push_back(GetMacros());
Host::Ptr host = GetHost();
- macroDicts.push_back(CalculateDynamicMacros());
+ macroDicts.push_back(CalculateDynamicMacros(crOverride));
if (host) {
macroDicts.push_back(host->GetMacros());
String GetHostName(void) const;
String GetShortName(void) const;
- Dictionary::Ptr CalculateDynamicMacros(void) const;
- Dictionary::Ptr CalculateAllMacros(void) const;
+ Dictionary::Ptr CalculateDynamicMacros(const Dictionary::Ptr& crOverride = Dictionary::Ptr()) const;
+ Dictionary::Ptr CalculateAllMacros(const Dictionary::Ptr& crOverride = Dictionary::Ptr()) const;
set<Host::Ptr> GetParentHosts(void) const;
set<Service::Ptr> GetParentServices(void) const;