Add more descriptive log messages in easy setup
[platform/upstream/iotivity.git] / service / easy-setup / mediator / richsdk / src / CloudResource.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
21 #include <functional>
22
23 #include "CloudResource.h"
24
25 #include "OCPlatform.h"
26 #include "ESException.h"
27 #include "OCResource.h"
28 #include "logger.h"
29
30 namespace OIC
31 {
32     namespace Service
33     {
34         #define ES_CLOUD_RES_TAG "ES_CLOUD_RESOURCE"
35
36         static const char ES_BASE_RES_URI[] = "/oic/res";
37
38         CloudResource::CloudResource(std::shared_ptr< OC::OCResource > resource)
39         {
40             m_ocResource = resource;
41         }
42
43         void CloudResource::provisionProperties(const CloudProp& cloudProp)
44         {
45             OIC_LOG (DEBUG, ES_CLOUD_RES_TAG, "provisionProperties IN");
46
47             OCRepresentation provisioningRepresentation = cloudProp.toOCRepresentation();
48
49             m_ocResource->post(OC_RSRVD_ES_RES_TYPE_PROV, BATCH_INTERFACE,
50                         provisioningRepresentation, QueryParamsMap(),
51                         std::function<
52                                 void(const HeaderOptions& headerOptions,
53                                         const OCRepresentation& rep, const int eCode) >(
54                         std::bind(&CloudResource::onCloudProvResponse, this,
55                         std::placeholders::_1, std::placeholders::_2,
56                         std::placeholders::_3)), OC::QualityOfService::HighQos);
57
58             OIC_LOG (DEBUG, ES_CLOUD_RES_TAG, "provisionProperties OUT");
59         }
60
61         void CloudResource::onCloudProvResponse(const HeaderOptions& /*headerOptions*/,
62                 const OCRepresentation& /*rep*/, const int eCode)
63         {
64             OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "onCloudProvResponse : eCode = %d",
65                         eCode);
66
67             if (eCode > OCStackResult::OC_STACK_RESOURCE_CHANGED)
68             {
69                 ESResult result = ESResult::ES_ERROR;
70
71                 OIC_LOG(DEBUG, ES_CLOUD_RES_TAG,"onCloudProvResponse : onCloudProvResponse is failed ");
72
73                 if(eCode == OCStackResult::OC_STACK_COMM_ERROR)
74                 {
75                     OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG,
76                             "can't receive any response from Enrollee by a timeout threshold.");
77                     result = ESResult::ES_COMMUNICATION_ERROR;
78                 }
79
80                 std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared<
81                         CloudPropProvisioningStatus >(result);
82                 m_cloudPropProvStatusCb(provStatus);
83             }
84             else
85             {
86                 OIC_LOG(DEBUG, ES_CLOUD_RES_TAG,"onCloudProvResponse : onCloudProvResponse is success ");
87                 std::shared_ptr< CloudPropProvisioningStatus > provStatus =
88                     std::make_shared<CloudPropProvisioningStatus >(ESResult::ES_OK);
89                 m_cloudPropProvStatusCb(provStatus);
90             }
91         }
92
93         void CloudResource::registerCloudPropProvisioningStatusCallback(
94             const CloudPropProvStatusCb callback)
95         {
96             m_cloudPropProvStatusCb = callback;
97         }
98     }
99 }