/* Eww. */
Dictionary::Ptr features = boost::make_shared<Dictionary>();
- features->Set("checker", DynamicType::GetByName("CheckerComponent") ? 1 : 0);
- features->Set("notification", DynamicType::GetByName("NotificationComponent") ? 1 : 0);
+ features->Set("checker", SupportsChecks() ? 1 : 0);
+ features->Set("notification", SupportsNotifications() ? 1 : 0);
params->Set("features", features);
Dictionary::Ptr message = boost::make_shared<Dictionary>();
Array::Ptr authorities = object->GetAuthorities();
std::vector<String> endpoints;
- if ((type == "checker" && DynamicType::GetByName("CheckerComponent")) ||
- (type == "notification" && DynamicType::GetByName("NotificationComponent")))
+ if ((type == "checker" && SupportsChecks()) ||
+ (type == "notification" && SupportsNotifications()))
endpoints.push_back(GetIdentity());
BOOST_FOREACH(const Endpoint::Ptr& endpoint, DynamicType::GetObjects<Endpoint>()) {
bool match = false;
- if (!endpoint->IsConnected())
+ if (!endpoint->IsConnected() || !endpoint->HasFeature(type))
continue;
if (authorities) {
result = (endpoints[index] == GetIdentity());
}
+bool ClusterComponent::SupportsChecks(void)
+{
+ return DynamicType::GetByName("CheckerComponent");
+}
+
+bool ClusterComponent::SupportsNotifications(void)
+{
+ return DynamicType::GetByName("NotificationComponent");
+}
+
void ClusterComponent::InternalSerialize(const Dictionary::Ptr& bag, int attributeTypes) const
{
DynamicObject::InternalSerialize(bag, attributeTypes);
void AcknowledgementClearedHandler(const Service::Ptr& service, const String& authority);
void MessageHandler(const Endpoint::Ptr& sender, const Dictionary::Ptr& message);
void CheckAuthorityHandler(const DynamicObject::Ptr& object, const String& type, bool& result);
+
+ static bool SupportsChecks(void);
+ static bool SupportsNotifications(void);
};
}