}
OCSecureResource::OCSecureResource(): m_csdkLock(std::weak_ptr<std::recursive_mutex>()),
- devPtr(nullptr)
+ devPtr(nullptr),
+ context(nullptr)
{
}
OCSecureResource::OCSecureResource(std::weak_ptr<std::recursive_mutex> csdkLock,
OCProvisionDev_t *dPtr)
- :m_csdkLock(csdkLock), devPtr(dPtr)
+ :m_csdkLock(csdkLock), devPtr(dPtr), context(nullptr)
{
}
{
OCDeleteDiscoveredDevices(devPtr);
}
+ if(context)
+ {
+ delete context;
+ }
}
OCStackResult OCSecureResource::doOwnershipTransfer(ResultCallBack resultCallback)
if (cLock)
{
ProvisionContext* context = new ProvisionContext(resultCallback);
+ if(context)
+ {
+ delete context;
+ }
+ context = new ProvisionContext(resultCallback);
std::lock_guard<std::recursive_mutex> lock(*cLock);
result = OCDoOwnershipTransfer(static_cast<void*>(context),
return result;
}
+ OCStackResult OCSecureResource::doOwnershipTransfer(ResultCallBack resultCallback, const OicSecOxm_t method)
+ {
+ if (!resultCallback)
+ {
+ oclog() <<"Result callback can't be null";
+ return OC_STACK_INVALID_CALLBACK;
+ }
+
+ OCStackResult result;
+ auto cLock = m_csdkLock.lock();
+
+ if (cLock)
+ {
+ if(context)
+ {
+ delete context;
+ }
+ context = new ProvisionContext(resultCallback);
+
+ std::lock_guard<std::recursive_mutex> lock(*cLock);
+ result = OCDoCustomOwnershipTransfer(static_cast<void*>(context),
+ devPtr, &OCSecureResource::callbackWrapper, method);
+ }
+ else
+ {
+ oclog() <<"Mutex not found";
+ result = OC_STACK_ERROR;
+ }
+ return result;
+ }
+
#ifdef MULTIPLE_OWNER
OCStackResult OCSecureResource::doMultipleOwnershipTransfer(ResultCallBack resultCallback)
{