Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / service / resource-encapsulation / src / resourceClient / RCSDiscoveryManager.cpp
old mode 100644 (file)
new mode 100755 (executable)
index c51b733..62b16b7
 // limitations under the License.
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
 #include "RCSDiscoveryManager.h"
+#include "RCSDiscoveryManagerImpl.h"
 
-#include "RCSRemoteResourceObject.h"
-#include "PrimitiveResource.h"
-
-#include "ScopeLogger.h"
+#define TAG "RCSDiscoveryManager"
 
-#define TAG PCF("RCSDiscoveryManager")
+namespace OIC {
+    namespace Service {
 
-using namespace OIC::Service;
-
-namespace
-{
-    void findCallback(std::shared_ptr< PrimitiveResource > primitiveResource,
-            RCSDiscoveryManager::ResourceDiscoveredCallback cb)
-    {
-        SCOPE_LOG_F(DEBUG, TAG);
+        RCSDiscoveryManager::DiscoveryTask::DiscoveryTask(unsigned int id) :
+                m_id{ id }
+        {
+        }
 
-        if (!primitiveResource)
+        RCSDiscoveryManager::DiscoveryTask::~DiscoveryTask()
         {
-            OC_LOG(ERROR, TAG, "findCallback : primitiveResource is null.");
-            return;
+            cancel();
         }
 
-        cb(std::make_shared< RCSRemoteResourceObject >(primitiveResource));
-    }
-}
+        bool RCSDiscoveryManager::DiscoveryTask::isCanceled()
+        {
+            return RCSDiscoveryManagerImpl::getInstance()->isCanceled(m_id);
+        }
 
-namespace OIC
-{
-    namespace Service
-    {
-        RCSDiscoveryManager* RCSDiscoveryManager::getInstance()
+        void RCSDiscoveryManager::DiscoveryTask::cancel()
         {
+            RCSDiscoveryManagerImpl::getInstance()->cancel(m_id);
+        }
+
+        RCSDiscoveryManager* RCSDiscoveryManager::getInstance() {
             static RCSDiscoveryManager instance;
             return &instance;
         }
 
-        void RCSDiscoveryManager::discoverResource(const RCSAddress& address,
-                const std::string& resourceURI, ResourceDiscoveredCallback cb)
-        {
-            SCOPE_LOG_F(DEBUG, TAG);
+        std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResource
+        (const RCSAddress& address, ResourceDiscoveredCallback cb) {
+            return discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI, "",
+                    std::move(cb));
+        }
+
+        std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResource
+        (const RCSAddress& address, const std::string& relativeURI, ResourceDiscoveredCallback cb) {
+            return discoverResourceByType(address, relativeURI, "", std::move(cb));
+        }
 
-            if (!cb)
-            {
-                OC_LOG(ERROR, TAG, "discoverResource NULL Callback");
-                throw InvalidParameterException{ "discoverResource NULL Callback'" };
-            }
+        std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResourceByType(
+                const RCSAddress& address, const std::string& resourceType, ResourceDiscoveredCallback cb) {
+            return discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI,
+                    resourceType, std::move(cb));
+        }
 
-            OIC::Service::discoverResource(address, resourceURI,
-                    std::bind(findCallback, std::placeholders::_1, std::move(cb)));
+        std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResourceByType(
+                const RCSAddress& address, const std::string& relativeURI,
+                const std::string& resourceType, ResourceDiscoveredCallback cb) {
+           return RCSDiscoveryManagerImpl::getInstance()->startDiscovery(address,
+                   relativeURI.empty() ? OC_RSRVD_WELL_KNOWN_URI : relativeURI,
+                   resourceType, std::move(cb));
         }
     }
 }