X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Feasy-setup%2Fmediator%2Frichsdk%2Fsrc%2FCloudResource.cpp;h=70b99cc561618679a125857b5854641f653699e5;hb=3c093548382bb2542c87a67e6e5fa32552c29cb3;hp=8d47b3c66405b332c937c931a5b139048fd34766;hpb=9c343f426f611ebdd6b60c4bfb4375b1d6e05219;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/easy-setup/mediator/richsdk/src/CloudResource.cpp b/service/easy-setup/mediator/richsdk/src/CloudResource.cpp index 8d47b3c..70b99cc 100755 --- a/service/easy-setup/mediator/richsdk/src/CloudResource.cpp +++ b/service/easy-setup/mediator/richsdk/src/CloudResource.cpp @@ -40,51 +40,68 @@ namespace OIC m_ocResource = resource; } - void CloudResource::provisionEnrollee(const CloudProp& cloudProp) + void CloudResource::onCloudProvResponseSafetyCb(const HeaderOptions& headerOptions, + const OCRepresentation& rep, + const int eCode, + ESCloudResourceCb cb, + std::weak_ptr this_ptr) { - OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "Enter provisionEnrollee."); + OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, "onCloudProvResponseSafetyCb"); + std::shared_ptr Ptr = this_ptr.lock(); + if(Ptr) + { + cb(headerOptions, rep, eCode); + } + } + + + void CloudResource::provisionProperties(const CloudProp& cloudProp) + { + OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, "provisionProperties IN"); OCRepresentation provisioningRepresentation = cloudProp.toOCRepresentation(); - m_ocResource->post(OC_RSRVD_ES_RES_TYPE_PROV, BATCH_INTERFACE, - provisioningRepresentation, QueryParamsMap(), - std::function< - void(const HeaderOptions& headerOptions, - const OCRepresentation& rep, const int eCode) >( - std::bind(&CloudResource::onCloudProvResponse, this, - std::placeholders::_1, std::placeholders::_2, - std::placeholders::_3))); + ESCloudResourceCb cb = std::bind(&CloudResource::onCloudProvResponseSafetyCb, + std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, + static_cast( + std::bind(&CloudResource::onCloudProvResponse, this, + std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)), + shared_from_this()); + + m_ocResource->post(OC_RSRVD_ES_RES_TYPE_EASYSETUP, BATCH_INTERFACE, + provisioningRepresentation, QueryParamsMap(), cb, OC::QualityOfService::HighQos); + + OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, "provisionProperties OUT"); } void CloudResource::onCloudProvResponse(const HeaderOptions& /*headerOptions*/, - const OCRepresentation& rep, const int eCode) + const OCRepresentation& /*rep*/, const int eCode) { - OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "onCloudProvResponse : %s, eCode = %d", - rep.getUri().c_str(), eCode); + OIC_LOG_V(DEBUG, ES_CLOUD_RES_TAG, "onCloudProvResponse : eCode = %d", + eCode); if (eCode > OCStackResult::OC_STACK_RESOURCE_CHANGED) { - ESResult result = ESResult::ES_ERROR; + ESResult result = ESResult::ES_ERROR; OIC_LOG(DEBUG, ES_CLOUD_RES_TAG,"onCloudProvResponse : onCloudProvResponse is failed "); - if (eCode == OCStackResult::OC_STACK_UNAUTHORIZED_REQ) + if(eCode == OCStackResult::OC_STACK_COMM_ERROR) { - OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, "Mediator is unauthorized from Enrollee."); - result = ESResult::ES_UNAUTHORIZED; + OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, + "can't receive any response from Enrollee by a timeout threshold."); + result = ESResult::ES_COMMUNICATION_ERROR; } std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared< - CloudPropProvisioningStatus >( - result, ESCloudProvState::ES_CLOUD_PROVISIONING_ERROR); + CloudPropProvisioningStatus >(result); m_cloudPropProvStatusCb(provStatus); } else { OIC_LOG(DEBUG, ES_CLOUD_RES_TAG,"onCloudProvResponse : onCloudProvResponse is success "); std::shared_ptr< CloudPropProvisioningStatus > provStatus = - std::make_shared( - ESResult::ES_OK, ESCloudProvState::ES_CLOUD_PROVISIONING_SUCCESS); + std::make_shared(ESResult::ES_OK); m_cloudPropProvStatusCb(provStatus); } } @@ -92,7 +109,6 @@ namespace OIC void CloudResource::registerCloudPropProvisioningStatusCallback( const CloudPropProvStatusCb callback) { - OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "Enter registerCloudPropProvisioningStatusCallback."); m_cloudPropProvStatusCb = callback; } }