X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fresource-encapsulation%2Fsrc%2FresourceClient%2FRCSDiscoveryManagerImpl.cpp;h=319c9b8ca51e429f95b067cc1625f48b438f6547;hb=c315c87e07c4080ecd0ef488e7a1047bc3c509b2;hp=a44399fde7ff5582356fc2362dc42f6ce637d5c2;hpb=b07bda79dfab08bb8a5c8ecc1b359484082bbec3;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManagerImpl.cpp b/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManagerImpl.cpp index a44399f..319c9b8 100755 --- a/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManagerImpl.cpp +++ b/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManagerImpl.cpp @@ -28,13 +28,25 @@ namespace { - constexpr char ALL_RESOURCE_TYPE[] = ""; constexpr unsigned int POLLING_INTERVAL_TIME = 60000; std::string makeResourceId(const std::shared_ptr< OIC::Service::PrimitiveResource >& resource) { 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 @@ -42,10 +54,11 @@ namespace OIC namespace Service { constexpr RCSDiscoveryManagerImpl::ID RCSDiscoveryManagerImpl::INVALID_ID; + constexpr char const* RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE; RCSDiscoveryManagerImpl::RCSDiscoveryManagerImpl() { - subscribePresenceWithMuticast(); + subscribePresenceWithMulticast(); m_timer.post(POLLING_INTERVAL_TIME, std::bind(&RCSDiscoveryManagerImpl::onPolling, this)); @@ -83,13 +96,7 @@ namespace OIC throw RCSInvalidParameterException{ "Callback is empty" }; } - for(const auto& it : resourceTypes) - { - if (it.compare(ALL_RESOURCE_TYPE) == 0) - { - throw RCSInvalidParameterException{ "ResourceType is duplicated!" }; - } - } + validateTypes(resourceTypes); const ID discoveryId = createId(); @@ -104,11 +111,11 @@ namespace OIC 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; @@ -182,7 +189,7 @@ namespace OIC { if (m_resourceTypes.empty()) { - m_resourceTypes.push_back(ALL_RESOURCE_TYPE); + m_resourceTypes.push_back(RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE); } } @@ -190,7 +197,12 @@ namespace OIC { 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); } }