m_ResultTimer->SetInterval(5);
m_ResultTimer->OnTimerExpired.connect(boost::bind(&CheckerComponent::ResultTimerHandler, this));
m_ResultTimer->Start();
+
+ CIB::RequireInformation(CIB_Configuration);
+ CIB::RequireInformation(CIB_ServiceStatus);
}
void CheckerComponent::Stop(void)
task = service.InvokeMethod("check", arguments, boost::bind(&CheckerComponent::CheckCompletedHandler, this, service, _1));
assert(task); /* TODO: gracefully handle missing hooks */
- /*CheckTask::Ptr task = CheckTask::CreateTask(service, boost::bind(&CheckerComponent::CheckCompletedHandler, this, _1));
- task->Start();*/
-
service.SetTag("current_task", task);
tasks++;
EndpointManager::GetInstance()->SendMulticastMessage(m_Endpoint, rm);
}
-
} catch (const exception& ex) {
stringstream msgbuf;
msgbuf << "Exception occured during check for service '"
if (!request.GetParams(¶ms))
return;
- MessagePart serviceMsg;
- if (!params.Get("service", &serviceMsg))
+ string service;
+ if (!params.Get("service", &service))
return;
- ConfigObject::Ptr object = boost::make_shared<ConfigObject>(serviceMsg.GetDictionary());
- Service service(object);
- m_Services.push(service);
+ ConfigObject::Ptr object = ConfigObject::GetObject("service", service);
- Logger::Write(LogDebug, "checker", "Accepted delegation for service '" + service.GetName() + "'");
+ if (!object) {
+ Logger::Write(LogWarning, "checker", "Ignoring delegation request for unknown service '" + service + "'.");
+ return;
+ }
- string id;
- if (request.GetID(&id)) {
- ResponseMessage rm;
- rm.SetID(id);
+ m_Services.push(object);
- MessagePart result;
- rm.SetResult(result);
- EndpointManager::GetInstance()->SendUnicastMessage(m_Endpoint, sender, rm);
- }
+ Logger::Write(LogDebug, "checker", "Accepted delegation for service '" + service + "'");
}
void CheckerComponent::ClearServicesRequestHandler(const Endpoint::Ptr& sender, const RequestMessage& request)
/* clear the services lists */
m_Services = ServiceQueue();
m_PendingServices.clear();
-
- /* TODO: clear checks we've already sent to the thread pool */
}
EXPORT_COMPONENT(checker, CheckerComponent);