{
return resource->getSid() + resource->getUri();
}
+
+ void validateTypes(const std::vector< std::string >& resourceTypes) {
+ if (resourceTypes.size() == 1) return;
+
+ for (const auto& type : resourceTypes)
+ {
+ if (type == OIC::Service::RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE)
+ {
+ throw OIC::Service::RCSBadRequestException{
+ "resource types must have no empty string!" };
+ }
+ }
+ }
}
namespace OIC
RCSDiscoveryManagerImpl::RCSDiscoveryManagerImpl()
{
- subscribePresenceWithMuticast();
+ subscribePresenceWithMulticast();
m_timer.post(POLLING_INTERVAL_TIME,
std::bind(&RCSDiscoveryManagerImpl::onPolling, this));
throw RCSInvalidParameterException{ "Callback is empty" };
}
- for(auto it = resourceTypes.begin()+1; it < resourceTypes.end(); it++)
- {
- if ((*it).compare(ALL_RESOURCE_TYPE) == 0)
- {
- throw RCSInvalidParameterException{ "ResourceType is duplicated!" };
- }
- }
+ validateTypes(resourceTypes);
const ID discoveryId = createId();
m_discoveryMap.insert(std::make_pair(discoveryId, std::move(discoveryInfo)));
}
- return std::unique_ptr < RCSDiscoveryManager::DiscoveryTask
- > (new RCSDiscoveryManager::DiscoveryTask(discoveryId));
+ return std::unique_ptr< RCSDiscoveryManager::DiscoveryTask >(
+ new RCSDiscoveryManager::DiscoveryTask(discoveryId));
}
- void RCSDiscoveryManagerImpl::subscribePresenceWithMuticast()
+ void RCSDiscoveryManagerImpl::subscribePresenceWithMulticast()
{
using namespace std::placeholders;
{
for (const auto& it : m_resourceTypes)
{
- discoverResource(m_address, m_relativeUri + "?rt=" + it, m_discoverCb);
+ std::string uri = std::string(OC_RSRVD_WELL_KNOWN_URI);
+ if (!it.empty())
+ {
+ uri = std::string(OC_RSRVD_WELL_KNOWN_URI) + "?rt=" + it;
+ }
+ discoverResource(m_address, uri, m_discoverCb);
}
}