const RCSAddress& address, const std::string& relativeUri,
const std::string& resourceType, ResourceDiscoveredCallback cb)
{
- return discoverResourceByTypes(address,
- relativeUri.empty() ? OC_RSRVD_WELL_KNOWN_URI : relativeUri,
- std::vector< std::string >
- { resourceType }, std::move(cb));
+ return discoverResourceByTypes(address, relativeUri,
+ std::vector< std::string >{ resourceType }, std::move(cb));
}
RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResourceByTypes(
const std::vector< std::string >& resourceTypes, ResourceDiscoveredCallback cb)
{
return RCSDiscoveryManagerImpl::getInstance()->startDiscovery(address,
- relativeUri.empty() ? OC_RSRVD_WELL_KNOWN_URI : relativeUri, resourceTypes,
+ relativeUri.empty() ? OC_RSRVD_WELL_KNOWN_URI : relativeUri,
+ resourceTypes.empty() ? std::vector< std::string >{
+ RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE } : resourceTypes,
std::move(cb));
}
}
{
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;