* URI).
*
* @param handle - @ref OCDoHandle to refer to the request sent out on behalf of
- * calling this API.
+ * calling this API. This handle can be used to cancel this operation
+ * via the OCCancel API.
+ * Note: This reference is handled internally, and
+ * should not be free'd by the consumer. A NULL handle is permitted
+ * in the event where the caller has no use for the return value.
* @param method - @ref OCMethod to perform on the resource
* @param requiredUri - URI of the resource to interact with
* @param referenceUri - URI of the reference resource
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
char szQueryUri[64] = { 0 };
cbData.cb = DeviceDiscoveryReqCB;
if(UNICAST_DISCOVERY)
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
OC_LOW_QOS, &cbData, NULL, 0);
}
else
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, (OC_ALL),
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, (OC_ALL),
OC_LOW_QOS, &cbData, NULL, 0);
}
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
/* Start a discovery query*/
char szQueryUri[64] = { 0 };
cbData.cd = NULL;
if(UNICAST_DISCOVERY)
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
OC_LOW_QOS, &cbData, NULL, 0);
}
else
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, (OC_ALL),
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, (OC_ALL),
OC_LOW_QOS, &cbData, NULL, 0);
}
if (ret != OC_STACK_OK)
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
cbData.cb = cb;
cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(&handle, method, query.str().c_str(), 0,
+ ret = OCDoResource(NULL, method, query.str().c_str(), 0,
(method == OC_REST_PUT || method == OC_REST_POST) ? putPayload.c_str() : NULL,
connType, qos, &cbData, options, numOptions);
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
/* Start a discovery query*/
char szQueryUri[64] = { 0 };
if (UNICAST_DISCOVERY)
cbData.cd = NULL;
if (UNICAST_DISCOVERY)
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
OC_LOW_QOS, &cbData, NULL, 0);
}
else
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, (OC_ALL),
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, (OC_ALL),
OC_LOW_QOS, &cbData, NULL, 0);
}
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
std::ostringstream getQuery;
getQuery << "coap://" << getIPAddrTBServer(clientResponse) << ":" <<
getPortTBServer(clientResponse) << "/SomeUnknownResource";
cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(&handle, OC_REST_GET, getQuery.str().c_str(), 0, 0, OC_CONNTYPE, OC_LOW_QOS,
+ ret = OCDoResource(NULL, OC_REST_GET, getQuery.str().c_str(), 0, 0, OC_CONNTYPE, OC_LOW_QOS,
&cbData, NULL, 0);
if (ret != OC_STACK_OK)
{
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
//* Make a PUT query*/
std::ostringstream getQuery;
getQuery << "coap://" << getIPAddrTBServer(clientResponse) << ":" <<
cbData.cd = NULL;
OC_LOG_V(INFO, TAG, "PUT payload from client = %s ", putPayload.c_str());
- ret = OCDoResource(&handle, OC_REST_PUT, getQuery.str().c_str(), 0, putPayload.c_str(),
+ ret = OCDoResource(NULL, OC_REST_PUT, getQuery.str().c_str(), 0, putPayload.c_str(),
OC_CONNTYPE, OC_LOW_QOS, &cbData, NULL, 0);
if (ret != OC_STACK_OK)
{
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
uint8_t remoteIpAddr[4];
uint16_t remotePortNu;
cbData.cb = getReqCB;
cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(&handle, OC_REST_GET,
+ ret = OCDoResource(NULL, OC_REST_GET,
getQuery.str().c_str(), 0, 0, OC_CONNTYPE, OC_LOW_QOS,
&cbData, NULL, 0);
if (ret != OC_STACK_OK)
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
/* Start a discovery query*/
char szQueryUri[64] = { 0 };
cbData.cb = discoveryReqCB;
cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_ALL,
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_ALL,
OC_LOW_QOS,
&cbData, NULL, 0);
if (ret != OC_STACK_OK)
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
cbData.cb = cb;
cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(&handle, method, query.str().c_str(), 0,
+ ret = OCDoResource(NULL, method, query.str().c_str(), 0,
NULL, OC_CONNTYPE, qos, &cbData, options, numOptions);
if (ret != OC_STACK_OK)
{
OCStackResult ret;
OCCallbackData cbData;
- OCDoHandle handle;
/* Start a discovery query*/
char szQueryUri[64] = { 0 };
if (UNICAST_DISCOVERY)
cbData.cd = NULL;
if(UNICAST_DISCOVERY)
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,
OC_LOW_QOS, &cbData, NULL, 0);
}
else
{
- ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_ALL,
+ ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_ALL,
OC_LOW_QOS, &cbData, NULL, 0);
}
if (ret != OC_STACK_OK)
CAInfo_t requestData;
CARequestInfo_t requestInfo;
CAGroupEndpoint_t grpEnd = {0};
+ OCDoHandle resHandle = NULL;
// To track if memory is allocated for additional header options
uint8_t hdrOptionMemAlloc = 0;
goto exit;
}
- *handle = GenerateInvocationHandle();
- if(!*handle)
+ resHandle = GenerateInvocationHandle();
+ if(!resHandle)
{
result = OC_STACK_NO_MEMORY;
goto exit;
goto exit;
}
- if((result = AddClientCB(&clientCB, cbData, &token, handle, method,
+ if((result = AddClientCB(&clientCB, cbData, &token, &resHandle, method,
requestUri, resourceType)) != OC_STACK_OK)
{
result = OC_STACK_NO_MEMORY;
goto exit;
}
+ if(handle)
+ {
+ *handle = resHandle;
+ }
+
exit:
if(newUri != requiredUri)
{
{
OC_LOG(ERROR, TAG, PCF("OCDoResource error"));
FindAndDeleteClientCB(clientCB);
+ OCFree(resHandle);
}
CADestroyRemoteEndpoint(endpoint);
OCFree(grpEnd.resourceUri);
+
if (hdrOptionMemAlloc)
{
OCFree(requestData.options);
if(cLock)
{
std::lock_guard<std::recursive_mutex> lock(*cLock);
- OCDoHandle handle;
- result = OCDoResource(&handle, OC_REST_GET,
+ result = OCDoResource(nullptr, OC_REST_GET,
deviceURI.c_str(),
nullptr, nullptr, connectivityType,
static_cast<OCQualityOfService>(QoS),
if(cLock)
{
OCHeaderOption options[MAX_HEADER_OPTIONS];
- OCDoHandle handle;
assembleHeaderOptions(options, headerOptions);
std::lock_guard<std::recursive_mutex> lock(*cLock);
- result = OCDoResource(&handle, OC_REST_DELETE,
+ result = OCDoResource(nullptr, OC_REST_DELETE,
os.str().c_str(), nullptr,
nullptr, connectivityType,
static_cast<OCQualityOfService>(m_cfg.QoS),