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<CloudResource> this_ptr)
{
- OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "Enter provisionEnrollee.");
-
- OCRepresentation provisioningRepresentation;
-
- provisioningRepresentation.setValue(OC_RSRVD_ES_AUTHCODE, cloudProp.authCode);
- provisioningRepresentation.setValue(OC_RSRVD_ES_AUTHPROVIDER, cloudProp.authProvider);
- provisioningRepresentation.setValue(OC_RSRVD_ES_CISERVER, cloudProp.ciServer);
-
- OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "provisionEnrollee : authCode - %s",
- (cloudProp.authCode).c_str());
- OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "provisionEnrollee : authProvider - %s",
- (cloudProp.authProvider).c_str());
- OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "provisionEnrollee : ciServer - %s",
- (cloudProp.ciServer).c_str());
-
- 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)));
+ OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, "onCloudProvResponseSafetyCb");
+ std::shared_ptr<CloudResource> 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();
+
+ ESCloudResourceCb cb = std::bind(&CloudResource::onCloudProvResponseSafetyCb,
+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
+ static_cast<ESCloudResourceCb>(
+ 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 != 0)
+ 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<
- CloudPropProvisioningStatus >(ESResult::ES_OK, ESCloudProvState::ES_CLOUD_PROVISIONING_SUCCESS);
+ std::shared_ptr< CloudPropProvisioningStatus > provStatus =
+ std::make_shared<CloudPropProvisioningStatus >(ESResult::ES_OK);
m_cloudPropProvStatusCb(provStatus);
}
}
- void CloudResource::registerCloudPropProvisioningStatusCallback(CloudPropProvStatusCb callback)
+ void CloudResource::registerCloudPropProvisioningStatusCallback(
+ const CloudPropProvStatusCb callback)
{
- OIC_LOG_V (DEBUG, ES_CLOUD_RES_TAG, "Enter registerCloudPropProvisioningStatusCallback.");
m_cloudPropProvStatusCb = callback;
}
}