replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / stack / src / occlientcb.c
old mode 100644 (file)
new mode 100755 (executable)
index 9b3c19d..82f46ce
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-
+#include "iotivity_config.h"
 #include "occlientcb.h"
-#include "utlist.h"
 #include "logger.h"
+#include "trace.h"
 #include "oic_malloc.h"
 #include <string.h>
 
-#ifdef WITH_ARDUINO
-#include "Time.h"
-#else
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
-#include "coap_time.h"
+#ifdef HAVE_ARDUINO_TIME_H
+#include "Time.h"
+#endif
 
 #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,
@@ -48,11 +48,13 @@ 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
@@ -74,6 +76,8 @@ AddClientCB (ClientCB** clientCB, OCCallbackData* cbData,
         {
             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;
@@ -89,7 +93,10 @@ AddClientCB (ClientCB** clientCB, OCCallbackData* cbData,
             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)
             {
@@ -102,6 +109,7 @@ AddClientCB (ClientCB** clientCB, OCCallbackData* cbData,
             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;
         }
@@ -127,6 +135,7 @@ AddClientCB (ClientCB** clientCB, OCCallbackData* cbData,
 
     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.
@@ -139,24 +148,33 @@ AddClientCB (ClientCB** clientCB, OCCallbackData* cbData,
     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);
@@ -184,6 +202,7 @@ void DeleteClientCB(ClientCB * cbNode)
         OICFree(cbNode);
         cbNode = NULL;
     }
+    OIC_TRACE_END();
 }
 
 /*
@@ -214,21 +233,21 @@ static void CheckAndDeleteTimedOutCB(ClientCB* cbNode)
 }
 
 ClientCB* GetClientCB(const CAToken_t token, uint8_t tokenLength,
-        OCDoHandle handle, const char * requestUri)
+                      OCDoHandle handle, const char * requestUri)
 {
     ClientCB* out = NULL;
 
-    if (token && *token && tokenLength <= CA_MAX_TOKEN_LEN && tokenLength > 0)
+    if (token && tokenLength <= CA_MAX_TOKEN_LEN && tokenLength > 0)
     {
         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);
@@ -236,10 +255,12 @@ ClientCB* GetClientCB(const CAToken_t token, uint8_t tokenLength,
     }
     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);
@@ -250,9 +271,11 @@ ClientCB* GetClientCB(const CAToken_t token, uint8_t tokenLength,
         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);
@@ -311,40 +334,3 @@ void FindAndDeleteClientCB(ClientCB * cbNode)
         }
     }
 }
-
-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;
-}