Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / service / resource-encapsulation / src / resourceClient / RCSDiscoveryManager.cpp
1 //******************************************************************
2 //
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20 #include "RCSDiscoveryManager.h"
21 #include "RCSDiscoveryManagerImpl.h"
22
23 #define TAG "RCSDiscoveryManager"
24
25 namespace OIC {
26     namespace Service {
27
28         RCSDiscoveryManager::DiscoveryTask::DiscoveryTask(unsigned int id) :
29                 m_id{ id }
30         {
31         }
32
33         RCSDiscoveryManager::DiscoveryTask::~DiscoveryTask()
34         {
35             cancel();
36         }
37
38         bool RCSDiscoveryManager::DiscoveryTask::isCanceled()
39         {
40             return RCSDiscoveryManagerImpl::getInstance()->isCanceled(m_id);
41         }
42
43         void RCSDiscoveryManager::DiscoveryTask::cancel()
44         {
45             RCSDiscoveryManagerImpl::getInstance()->cancel(m_id);
46         }
47
48         RCSDiscoveryManager* RCSDiscoveryManager::getInstance() {
49             static RCSDiscoveryManager instance;
50             return &instance;
51         }
52
53         std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResource
54         (const RCSAddress& address, ResourceDiscoveredCallback cb) {
55             return discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI, "",
56                     std::move(cb));
57         }
58
59         std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResource
60         (const RCSAddress& address, const std::string& relativeURI, ResourceDiscoveredCallback cb) {
61             return discoverResourceByType(address, relativeURI, "", std::move(cb));
62         }
63
64         std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResourceByType(
65                 const RCSAddress& address, const std::string& resourceType, ResourceDiscoveredCallback cb) {
66             return discoverResourceByType(address, OC_RSRVD_WELL_KNOWN_URI,
67                     resourceType, std::move(cb));
68         }
69
70         std::unique_ptr<RCSDiscoveryManager::DiscoveryTask> RCSDiscoveryManager::discoverResourceByType(
71                 const RCSAddress& address, const std::string& relativeURI,
72                 const std::string& resourceType, ResourceDiscoveredCallback cb) {
73            return RCSDiscoveryManagerImpl::getInstance()->startDiscovery(address,
74                    relativeURI.empty() ? OC_RSRVD_WELL_KNOWN_URI : relativeURI,
75                    resourceType, std::move(cb));
76         }
77     }
78 }