//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
+#include "iotivity_config.h"
#include "occlientcb.h"
-#include "utlist.h"
#include "logger.h"
+#include "trace.h"
#include "oic_malloc.h"
#include <string.h>
#ifdef HAVE_ARDUINO_TIME_H
#include "Time.h"
#endif
-#include "coap_time.h"
#include "cacommon.h"
#include "cainterface.h"
+#include <coap/coap.h>
/// Module Name
#define TAG "OIC_RI_CLIENTCB"
struct ClientCB *cbList = NULL;
-static OCMulticastNode * mcPresenceNodes = NULL;
OCStackResult
AddClientCB (ClientCB** clientCB, OCCallbackData* cbData,
OCDevAddr *devAddr, char * requestUri,
char * resourceTypeName, uint32_t ttl)
{
- if (!clientCB || !cbData || !handle || !requestUri || tokenLength > CA_MAX_TOKEN_LEN)
+ if (!clientCB || !cbData || !handle || tokenLength > CA_MAX_TOKEN_LEN)
{
return OC_STACK_INVALID_PARAM;
}
+ OIC_TRACE_BEGIN(%s:AddClientCB, TAG);
+
ClientCB *cbNode = NULL;
#ifdef WITH_PRESENCE
{
OIC_LOG(INFO, TAG, "Adding client callback with token");
OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)token, tokenLength);
+ OIC_TRACE_BUFFER("OIC_RI_CLIENTCB:AddClientCB:token",
+ (const uint8_t *) token, tokenLength);
cbNode->callBack = cbData->cb;
cbNode->context = cbData->context;
cbNode->deleteCallback = cbData->cd;
cbNode->filterResourceType = NULL;
#endif // WITH_PRESENCE
- if (method == OC_REST_PRESENCE ||
+ if (
+#ifdef WITH_PRESENCE
+ method == OC_REST_PRESENCE ||
+#endif
method == OC_REST_OBSERVE ||
method == OC_REST_OBSERVE_ALL)
{
cbNode->requestUri = requestUri; // I own it now
cbNode->devAddr = devAddr; // I own it now
OIC_LOG_V(INFO, TAG, "Added Callback for uri : %s", requestUri);
+ OIC_TRACE_MARK(%s:AddClientCB:uri:%s, TAG, requestUri);
LL_APPEND(cbList, cbNode);
*clientCB = cbNode;
}
if (method == OC_REST_PRESENCE && resourceTypeName)
{
+ OIC_TRACE_END();
// Amend the found or created node by adding a new resourceType to it.
return InsertResourceTypeFilter(cbNode,(char *)resourceTypeName);
// I own resourceTypName now.
OICFree(resourceTypeName);
#endif
+ OIC_TRACE_END();
return OC_STACK_OK;
exit:
+ OIC_TRACE_END();
return OC_STACK_NO_MEMORY;
}
void DeleteClientCB(ClientCB * cbNode)
{
+ OIC_TRACE_BEGIN(%s:DeleteClientCB, TAG);
if (cbNode)
{
LL_DELETE(cbList, cbNode);
OIC_LOG (INFO, TAG, "Deleting token");
OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)cbNode->token, cbNode->tokenLength);
+ OIC_TRACE_BUFFER("OIC_RI_CLIENTCB:DeleteClientCB:token",
+ (const uint8_t *)cbNode->token, cbNode->tokenLength);
CADestroyToken (cbNode->token);
OICFree(cbNode->devAddr);
OICFree(cbNode->handle);
- OIC_LOG_V (INFO, TAG, "Deleting callback with uri %s", cbNode->requestUri);
- OICFree(cbNode->requestUri);
+ if (cbNode->requestUri)
+ {
+ OIC_LOG_V (INFO, TAG, "Deleting callback with uri %s", cbNode->requestUri);
+ OIC_TRACE_MARK(%s:DeleteClientCB:uri:%s, TAG, cbNode->requestUri);
+ OICFree(cbNode->requestUri);
+ }
if (cbNode->deleteCallback)
{
cbNode->deleteCallback(cbNode->context);
OICFree(cbNode);
cbNode = NULL;
}
+ OIC_TRACE_END();
}
/*
{
OIC_LOG (INFO, TAG, "Looking for token");
OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)token, tokenLength);
- OIC_LOG(INFO, TAG, "\tFound in callback list");
LL_FOREACH(cbList, out)
{
- OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)out->token, tokenLength);
-
+ /* de-annotate below line if want to see all token in cbList */
+ //OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)out->token, tokenLength);
if (memcmp(out->token, token, tokenLength) == 0)
{
+ OIC_LOG(INFO, TAG, "Found in callback list");
return out;
}
CheckAndDeleteTimedOutCB(out);
}
else if (handle)
{
+ OIC_LOG (INFO, TAG, "Looking for handle");
LL_FOREACH(cbList, out)
{
if (out->handle == handle)
{
+ OIC_LOG(INFO, TAG, "Found in callback list");
return out;
}
CheckAndDeleteTimedOutCB(out);
OIC_LOG_V(INFO, TAG, "Looking for uri %s", requestUri);
LL_FOREACH(cbList, out)
{
- OIC_LOG_V(INFO, TAG, "\tFound %s", out->requestUri);
+ /* de-annotate below line if want to see all uri in cbList */
+ //OIC_LOG_V(INFO, TAG, "%s", out->requestUri);
if (out->requestUri && strcmp(out->requestUri, requestUri ) == 0)
{
+ OIC_LOG(INFO, TAG, "Found in callback list");
return out;
}
CheckAndDeleteTimedOutCB(out);
}
}
}
-
-OCStackResult AddMCPresenceNode(OCMulticastNode** outnode, char* uri, uint32_t nonce)
-{
- if (!outnode)
- {
- return OC_STACK_INVALID_PARAM;
- }
-
- OCMulticastNode *node = (OCMulticastNode*) OICMalloc(sizeof(*node));
- if (node)
- {
- node->nonce = nonce;
- node->uri = uri;
- LL_APPEND(mcPresenceNodes, node);
- *outnode = node;
- return OC_STACK_OK;
- }
- *outnode = NULL;
- return OC_STACK_NO_MEMORY;
-}
-
-OCMulticastNode* GetMCPresenceNode(const char * uri)
-{
- if (uri)
- {
- OCMulticastNode* out = NULL;
- LL_FOREACH(mcPresenceNodes, out)
- {
- if (out->uri && strcmp(out->uri, uri) == 0)
- {
- return out;
- }
- }
- }
- OIC_LOG(INFO, TAG, "MulticastNode Not found !!");
- return NULL;
-}