scheduleInfo->Set("execution_end", Utility::GetTime());
scheduleInfo->Set("schedule_end", Utility::GetTime());
+ Dictionary::Ptr result;
+
try {
Value vresult = task->GetResult();
- if (vresult.IsObjectType<Dictionary>()) {
- Dictionary::Ptr result = vresult;
+ if (vresult.IsObjectType<Dictionary>())
+ result = vresult;
+ } catch (const exception& ex) {
+ stringstream msgbuf;
+ msgbuf << "Exception occured during check for service '"
+ << GetName() << "': " << ex.what();
+ String message = msgbuf.str();
- if (!result->Contains("schedule_start"))
- result->Set("schedule_start", scheduleInfo->Get("schedule_start"));
+ Logger::Write(LogWarning, "checker", message);
- if (!result->Contains("schedule_end"))
- result->Set("schedule_end", scheduleInfo->Get("schedule_end"));
+ result = boost::make_shared<Dictionary>();
+ result->Set("state", StateUnknown);
+ result->Set("output", message);
+ }
- if (!result->Contains("execution_start"))
- result->Set("execution_start", scheduleInfo->Get("execution_start"));
+ if (result) {
+ if (!result->Contains("schedule_start"))
+ result->Set("schedule_start", scheduleInfo->Get("schedule_start"));
- if (!result->Contains("execution_end"))
- result->Set("execution_end", scheduleInfo->Get("execution_end"));
+ if (!result->Contains("schedule_end"))
+ result->Set("schedule_end", scheduleInfo->Get("schedule_end"));
- if (!result->Contains("active"))
- result->Set("active", 1);
+ if (!result->Contains("execution_start"))
+ result->Set("execution_start", scheduleInfo->Get("execution_start"));
- ProcessCheckResult(result);
- }
- } catch (const exception& ex) {
- stringstream msgbuf;
- msgbuf << "Exception occured during check for service '"
- << GetName() << "': " << ex.what();
- Logger::Write(LogWarning, "checker", msgbuf.str());
+ if (!result->Contains("execution_end"))
+ result->Set("execution_end", scheduleInfo->Get("execution_end"));
+
+ if (!result->Contains("active"))
+ result->Set("active", 1);
+
+ ProcessCheckResult(result);
}
/* figure out when the next check is for this service; the call to