Merge test folder of test branch
[iotivity.git] / test / src / iBtestapp / modules / rc / c_cpp / src / RCClient.cpp
1 /******************************************************************
2  *
3  * Copyright 2016 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
21 #include "RCClient.h"
22
23 using namespace OC;
24 using namespace std;
25 using namespace OIC::Service;
26
27 std::mutex RCClient::s_mutexRcClient;
28 RCClient* RCClient::s_RCClient = NULL;
29
30 RCClient::RCClient()
31 {
32     PlatformConfig config
33     { OC::ServiceType::InProc, ModeType::Both, "0.0.0.0", 0, OC::QualityOfService::LowQos };
34     OCPlatform::Configure(config);
35     resourceTypes =
36     {   "oic.r.light", "core.fan"};
37     relativetUri = OC_RSRVD_WELL_KNOWN_URI;
38 }
39
40 RCClient* RCClient::getInstance(void)
41 {
42     if (s_RCClient == NULL)
43     {
44         s_mutexRcClient.lock();
45
46         s_RCClient = new RCClient();
47
48         s_mutexRcClient.unlock();
49     }
50
51     return s_RCClient;
52 }
53
54 RCClient::~RCClient()
55 {
56     if (s_RCClient == NULL)
57     {
58         delete s_RCClient;
59         s_RCClient = NULL;
60     }
61 }
62
63 void RCClient::rcObserveResourceContainer(RCSResourceContainer *container,
64         std::vector< std::string > vecResourceTypes)
65 {
66     OCStackResult actualResult = OC_STACK_ERROR;
67     cout << "\nFinding resources.Please wait..." << endl;
68     bool sendRequest = true;
69
70     RCFoundResourcesListener::g_foundResource = false;
71
72     try
73     {
74         if (sendRequest)
75         {
76             sendRequest = false;
77
78             for (int index = 0; index < vecResourceTypes.size(); index++)
79             {
80                 cout << "Searching for... : " << vecResourceTypes[index] << endl;
81             }
82
83             cout << endl;
84
85             //Note: here type OC_RSRVD_WELL_KNOWN_URI will search for all kind of resources.
86             actualResult = OCPlatform::findResource("", OC_RSRVD_WELL_KNOWN_URI, CT_DEFAULT,
87                     RCFoundResourcesListener::rcFoundResourceCB);
88             IBtestappCommonUtil::waitForServerResponse();
89
90             if (actualResult == OC_STACK_OK && RCFoundResourcesListener::g_foundResource)
91             {
92                 cout << "Found resource operation has been completed successfully..." << endl;
93             }
94         }
95
96         if (!RCFoundResourcesListener::g_foundResource)
97             cout << "Sorry.No resource has been found..." << endl;
98     }
99     catch (OC::OCException &ex)
100     {
101         sendRequest = true;
102         cout << "OcException is occurred: " << ex.reason().c_str() << endl;
103     }
104 }