X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fresource-encapsulation%2Fsrc%2FresourceClient%2FRCSDiscoveryManager.cpp;h=007d49cbd48827cd0da70c276a9c0b7794546cc0;hb=45c364268c4f5d575d98f4cd88b571b536c6cb17;hp=7e19d4daa5b4251f8f81e3da40061a48dbf695fa;hpb=193ac144d877c161b7118152671693b1c420060f;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManager.cpp b/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManager.cpp index 7e19d4d..007d49c 100644 --- a/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManager.cpp +++ b/service/resource-encapsulation/src/resourceClient/RCSDiscoveryManager.cpp @@ -17,79 +17,85 @@ // limitations under the License. // //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - #include "RCSDiscoveryManager.h" -#include "RCSRemoteResourceObject.h" -#include "PrimitiveResource.h" - -#include "ScopeLogger.h" - -#define TAG PCF("RCSDiscoveryManager") +#include "RCSDiscoveryManagerImpl.h" -using namespace OIC::Service; - -namespace +namespace OIC { - void findCallback(std::shared_ptr< PrimitiveResource > primitiveResource, - RCSDiscoveryManager::ResourceDiscoveredCallback cb) + namespace Service { - SCOPE_LOG_F(DEBUG, TAG); + RCSDiscoveryManager::DiscoveryTask::DiscoveryTask(unsigned int id) : + m_id { id } {} - if (!primitiveResource) + bool RCSDiscoveryManager::DiscoveryTask::isCanceled() { - OC_LOG(ERROR, TAG, "findCallback : primitiveResource is null."); - return; + return m_id == RCSDiscoveryManagerImpl::INVALID_ID; } - cb(std::make_shared< RCSRemoteResourceObject >(primitiveResource)); - } -} + void RCSDiscoveryManager::DiscoveryTask::cancel() + { + if (isCanceled()) + return; + + RCSDiscoveryManagerImpl::getInstance()->cancel(m_id); + m_id = RCSDiscoveryManagerImpl::INVALID_ID; + } -namespace OIC -{ - namespace Service - { RCSDiscoveryManager* RCSDiscoveryManager::getInstance() { static RCSDiscoveryManager instance; return &instance; } - void RCSDiscoveryManager::discoverResource(const RCSAddress& address, - ResourceDiscoveredCallback cb) + RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResource( + const RCSAddress& address, ResourceDiscoveredCallback cb) { - discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI, "", std::move(cb)); + return discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI, + RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE, std::move(cb)); } - void RCSDiscoveryManager::discoverResource(const RCSAddress& address, - const std::string& relativeURI, ResourceDiscoveredCallback cb) + RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResource( + const RCSAddress& address, const std::string& relativeUri, + ResourceDiscoveredCallback cb) { - discoverResourceByType(address, relativeURI, "", std::move(cb)); + return discoverResourceByType(address, relativeUri, + RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE, std::move(cb)); } - void RCSDiscoveryManager::discoverResourceByType(const RCSAddress& address, - const std::string& resourceType, + RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResourceByType( + const RCSAddress& address, const std::string& resourceType, ResourceDiscoveredCallback cb) { - discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI, resourceType, std::move(cb)); + return discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI, resourceType, + std::move(cb)); } - void RCSDiscoveryManager::discoverResourceByType(const RCSAddress& address, - const std::string& relativeURI, const std::string& resourceType, + RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResourceByTypes( + const RCSAddress& address, const std::vector< std::string >& resourceTypes, ResourceDiscoveredCallback cb) { - if (!cb) - { - OC_LOG(ERROR, TAG, "discoverResourceByType NULL Callback"); - throw InvalidParameterException { "discoverResourceByType NULL Callback'" }; - } - else - { - std::string resourceURI = relativeURI + "?rt=" + resourceType; - OIC::Service::discoverResource(address, resourceURI, - std::bind(findCallback, std::placeholders::_1, std::move(cb))); - } + return discoverResourceByTypes(address, OC_RSRVD_WELL_KNOWN_URI, resourceTypes, + std::move(cb)); + } + + RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResourceByType( + const RCSAddress& address, const std::string& relativeUri, + const std::string& resourceType, ResourceDiscoveredCallback cb) + { + return discoverResourceByTypes(address, relativeUri, + std::vector< std::string >{ resourceType }, std::move(cb)); + } + + RCSDiscoveryManager::DiscoveryTask::Ptr RCSDiscoveryManager::discoverResourceByTypes( + const RCSAddress& address, const std::string& relativeUri, + const std::vector< std::string >& resourceTypes, ResourceDiscoveredCallback cb) + { + return RCSDiscoveryManagerImpl::getInstance()->startDiscovery(address, + relativeUri.empty() ? OC_RSRVD_WELL_KNOWN_URI : relativeUri, + resourceTypes.empty() ? std::vector< std::string >{ + RCSDiscoveryManagerImpl::ALL_RESOURCE_TYPE } : resourceTypes, + std::move(cb)); } } }