replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / notification / src / consumer / NSConsumerDiscovery.c
index 98951b3..28c137e 100644 (file)
 
 #include <string.h>
 #include "NSCommon.h"
+#include "NSUtil.h"
 #include "NSConsumerCommon.h"
 #include "NSConstants.h"
 #include "ocpayload.h"
 #include "oic_malloc.h"
 #include "oic_string.h"
 
-#define NS_DISCOVER_QUERY "/oic/res?rt=oic.r.notification"
-#define NS_PRESENCE_SUBSCRIBE_QUERY_TCP "/oic/ad?rt=oic.r.notification"
-#define NS_GET_INFORMATION_QUERY "/notification?if=oic.if.notification"
-
-NSProvider_internal * NSGetProvider(OCClientResponse * clientResponse);
-
-OCDevAddr * NSChangeAddress(const char * address);
+#define NS_DISCOVER_QUERY "/oic/res?rt=x.org.iotivity.notification"
+#define NS_PRESENCE_SUBSCRIBE_QUERY_TCP "/oic/ad?rt=x.org.iotivity.notification"
 
 OCStackApplicationResult NSConsumerPresenceListener(
         void * ctx, OCDoHandle handle, OCClientResponse * clientResponse)
@@ -47,7 +43,7 @@ OCStackApplicationResult NSConsumerPresenceListener(
     NS_VERIFY_STACK_SUCCESS(
             NSOCResultToSuccess(clientResponse->result), OC_STACK_KEEP_TRANSACTION);
 
-    NS_LOG_V(DEBUG, "Presence income : %s:%d",
+    NS_LOG_V(INFO_PRIVATE, "Presence income : %s:%d",
             clientResponse->devAddr.addr, clientResponse->devAddr.port);
     NS_LOG_V(DEBUG, "Presence result : %d",
             clientResponse->result);
@@ -81,7 +77,7 @@ OCStackApplicationResult NSConsumerPresenceListener(
     {
         NS_LOG(DEBUG, "started presence or resource is created.");
         NSInvokeRequest(NULL, OC_REST_DISCOVER, clientResponse->addr,
-            NS_DISCOVER_QUERY, NULL, NSProviderDiscoverListener, NULL,
+            NS_DISCOVER_QUERY, NULL, NSProviderDiscoverListener, NULL, NULL,
             clientResponse->addr->adapter);
     }
 
@@ -97,7 +93,7 @@ OCStackApplicationResult NSProviderDiscoverListener(
     NS_VERIFY_NOT_NULL(clientResponse->payload, OC_STACK_KEEP_TRANSACTION);
     NS_VERIFY_STACK_SUCCESS(NSOCResultToSuccess(clientResponse->result), OC_STACK_KEEP_TRANSACTION);
 
-    NS_LOG_V(DEBUG, "Discover income : %s:%d",
+    NS_LOG_V(INFO_PRIVATE, "Discover income : %s:%d",
             clientResponse->devAddr.addr, clientResponse->devAddr.port);
     NS_LOG_V(DEBUG, "Discover result : %d",
             clientResponse->result);
@@ -111,25 +107,38 @@ OCStackApplicationResult NSProviderDiscoverListener(
         return OC_STACK_DELETE_TRANSACTION;
     }
 
-    OCResourcePayload * resource = ((OCDiscoveryPayload *)clientResponse->payload)->resources;
-    NS_LOG_V(DEBUG, "Discovered resource uri : %s",
-                        resource->uri);
-    while (resource)
+    OCDiscoveryPayload * discoveryPayload = (OCDiscoveryPayload *)clientResponse->payload;
+
+    while (discoveryPayload)
     {
-        NS_VERIFY_NOT_NULL(resource->uri, OC_STACK_KEEP_TRANSACTION);
-        if (strstr(resource->uri, NS_RESOURCE_URI))
+        OCResourcePayload * resource = discoveryPayload->resources;
+        while (resource)
         {
-            OCConnectivityType type = CT_DEFAULT;
-            if (clientResponse->addr->adapter == OC_ADAPTER_TCP)
+            NS_LOG_V(DEBUG, "Discovered resource uri : %s", resource->uri);
+            NS_VERIFY_NOT_NULL(resource->uri, OC_STACK_KEEP_TRANSACTION);
+            if (strstr(resource->uri, NS_RESOURCE_URI))
             {
-                type = CT_ADAPTER_TCP;
+                NS_LOG_V(DEBUG, "Request GET to provider : %s", resource->uri);
+                OCConnectivityType type = CT_DEFAULT;
+                if (clientResponse->addr->adapter == OC_ADAPTER_TCP)
+                {
+                    type = CT_ADAPTER_TCP;
+                }
+
+                OCDevAddr * addr = clientResponse->addr;
+                if (resource->secure)
+                {
+                    addr->port = resource->port;
+                    addr->flags |= OC_FLAG_SECURE;
+                }
+
+                NSInvokeRequest(NULL, OC_REST_GET, addr,
+                        resource->uri, NULL, NSIntrospectProvider, ctx,
+                        NULL, type);
             }
-
-            NSInvokeRequest(NULL, OC_REST_GET, clientResponse->addr,
-                    resource->uri, NULL, NSIntrospectProvider, ctx,
-                    type);
+            resource = resource->next;
         }
-        resource = resource->next;
+        discoveryPayload = discoveryPayload->next;
     }
 
     return OC_STACK_KEEP_TRANSACTION;
@@ -143,7 +152,7 @@ OCStackApplicationResult NSIntrospectProvider(
     NS_VERIFY_NOT_NULL(clientResponse, OC_STACK_KEEP_TRANSACTION);
     NS_VERIFY_STACK_SUCCESS(NSOCResultToSuccess(clientResponse->result), OC_STACK_KEEP_TRANSACTION);
 
-    NS_LOG_V(DEBUG, "GET response income : %s:%d",
+    NS_LOG_V(INFO_PRIVATE, "GET response income : %s:%d",
             clientResponse->devAddr.addr, clientResponse->devAddr.port);
     NS_LOG_V(DEBUG, "GET response result : %d",
             clientResponse->result);
@@ -175,155 +184,6 @@ OCStackApplicationResult NSIntrospectProvider(
     return OC_STACK_KEEP_TRANSACTION;
 }
 
-void NSGetProviderPostClean(
-        char * pId, char * mUri, char * sUri, char * tUri, NSProviderConnectionInfo * connection)
-{
-    NSOICFree(pId);
-    NSOICFree(mUri);
-    NSOICFree(sUri);
-    NSOICFree(tUri);
-    NSRemoveConnections(connection);
-}
-
-NSProvider_internal * NSGetProvider(OCClientResponse * clientResponse)
-{
-    NS_LOG(DEBUG, "create NSProvider");
-    NS_VERIFY_NOT_NULL(clientResponse->payload, NULL);
-
-    OCRepPayloadPropType accepterType = OCREP_PROP_BOOL;
-
-    OCRepPayload * payload = (OCRepPayload *)clientResponse->payload;
-    while (payload)
-    {
-        NS_LOG_V(DEBUG, "Payload Key : %s", payload->values->name);
-        NS_LOG_V(DEBUG, "Payload Type : %d", (int) payload->values->type);
-        if (!strcmp(payload->values->name, NS_ATTRIBUTE_POLICY))
-        {
-            accepterType = payload->values->type;
-        }
-        payload = payload->next;
-    }
-
-    payload = (OCRepPayload *)clientResponse->payload;
-
-    char * providerId = NULL;
-    char * messageUri = NULL;
-    char * syncUri = NULL;
-    char * topicUri = NULL;
-    bool bAccepter = 0;
-    int16_t iAccepter = 0;
-    NSProviderConnectionInfo * connection = NULL;
-
-    NS_LOG(DEBUG, "get information of accepter");
-    bool getResult = false;
-    if (accepterType == OCREP_PROP_BOOL)
-    {
-        getResult = OCRepPayloadGetPropBool(payload, NS_ATTRIBUTE_POLICY, & bAccepter);
-    }
-    else if (accepterType == OCREP_PROP_INT)
-    {
-        getResult = OCRepPayloadGetPropInt(payload, NS_ATTRIBUTE_POLICY, (int64_t*) & iAccepter);
-    }
-    NS_VERIFY_NOT_NULL(getResult == true ? (void *) 1 : NULL, NULL);
-
-    NS_LOG(DEBUG, "get provider ID");
-    getResult = OCRepPayloadGetPropString(payload, NS_ATTRIBUTE_PROVIDER_ID, & providerId);
-    NS_VERIFY_NOT_NULL(getResult == true ? (void *) 1 : NULL, NULL);
-
-    NS_LOG(DEBUG, "get message URI");
-    getResult = OCRepPayloadGetPropString(payload, NS_ATTRIBUTE_MESSAGE, & messageUri);
-    NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(getResult == true ? (void *) 1 : NULL, NULL,
-            NSGetProviderPostClean(providerId, messageUri, syncUri, topicUri, connection));
-
-    NS_LOG(DEBUG, "get sync URI");
-    getResult = OCRepPayloadGetPropString(payload, NS_ATTRIBUTE_SYNC, & syncUri);
-    NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(getResult == true ? (void *) 1 : NULL, NULL,
-            NSGetProviderPostClean(providerId, messageUri, syncUri, topicUri, connection));
-
-    NS_LOG(DEBUG, "get topic URI");
-    getResult = OCRepPayloadGetPropString(payload, NS_ATTRIBUTE_TOPIC, & topicUri);
-
-    NS_LOG(DEBUG, "get provider connection information");
-    NS_VERIFY_NOT_NULL(clientResponse->addr, NULL);
-    connection = NSCreateProviderConnections(clientResponse->addr);
-    NS_VERIFY_NOT_NULL(connection, NULL);
-
-    NSProvider_internal * newProvider
-        = (NSProvider_internal *)OICMalloc(sizeof(NSProvider_internal));
-    NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newProvider, NULL,
-          NSGetProviderPostClean(providerId, messageUri, syncUri, topicUri, connection));
-
-    OICStrcpy(newProvider->providerId, sizeof(char) * NS_DEVICE_ID_LENGTH, providerId);
-    NSOICFree(providerId);
-    newProvider->messageUri = messageUri;
-    newProvider->syncUri = syncUri;
-    newProvider->topicUri = NULL;
-    if (topicUri && strlen(topicUri) > 0)
-    {
-        newProvider->topicUri = topicUri;
-    }
-    if (accepterType == OCREP_PROP_BOOL)
-    {
-        newProvider->accessPolicy = (NSSelector)bAccepter;
-    }
-    else if (accepterType == OCREP_PROP_INT)
-    {
-        newProvider->accessPolicy = (NSSelector)iAccepter;
-    }
-
-    newProvider->connection = connection;
-    newProvider->topicLL = NULL;
-    newProvider->state = NS_DISCOVERED;
-
-    return newProvider;
-}
-
-OCDevAddr * NSChangeAddress(const char * address)
-{
-    NS_VERIFY_NOT_NULL(address, NULL);
-    OCDevAddr * retAddr = NULL;
-
-    int index = 0;
-    while(address[index] != '\0')
-    {
-        if (address[index] == ':')
-        {
-            break;
-        }
-        index++;
-    }
-
-    if (address[index] == '\0')
-    {
-        return NULL;
-    }
-
-    int tmp = index + 1;
-    uint16_t port = address[tmp++] - '0';
-
-    while(address[tmp] != '\0')
-    {
-        port *= 10;
-        port += address[tmp++] - '0';
-    }
-
-    retAddr = (OCDevAddr *) OICMalloc(sizeof(OCDevAddr));
-    NS_VERIFY_NOT_NULL(retAddr, NULL);
-
-    retAddr->adapter = OC_ADAPTER_TCP;
-    OICStrcpy(retAddr->addr, index + 1, address);
-    retAddr->addr[index] = '\0';
-    retAddr->port = port;
-    retAddr->flags = OC_IP_USE_V6;
-
-    NS_LOG(DEBUG, "Change Address for TCP request");
-    NS_LOG_V(DEBUG, "Origin : %s", address);
-    NS_LOG_V(DEBUG, "Changed Addr : %s", retAddr->addr);
-    NS_LOG_V(DEBUG, "Changed Port : %d", retAddr->port);
-
-    return retAddr;
-}
-
 void NSConsumerHandleRequestDiscover(OCDevAddr * address, NSConsumerDiscoverType rType)
 {
     OCConnectivityType type = CT_ADAPTER_IP;
@@ -341,7 +201,7 @@ void NSConsumerHandleRequestDiscover(OCDevAddr * address, NSConsumerDiscoverType
             NS_LOG(DEBUG, "Request discover and subscribe presence [TCP]");
             NS_LOG(DEBUG, "Subscribe presence [TCP]");
             NSInvokeRequest(NULL, OC_REST_PRESENCE, address, NS_PRESENCE_SUBSCRIBE_QUERY_TCP,
-                    NULL, NSConsumerPresenceListener, NULL, type);
+                    NULL, NSConsumerPresenceListener, NULL, NULL, type);
 
             if (rType == NS_DISCOVER_CLOUD)
             {
@@ -350,7 +210,7 @@ void NSConsumerHandleRequestDiscover(OCDevAddr * address, NSConsumerDiscoverType
         }
         else
         {
-            NS_LOG_V(DEBUG, "Request discover But Adapter is not IP : %d", address->adapter);
+            NS_LOG_V(INFO_PRIVATE, "Request discover But Adapter is not IP : %d", address->adapter);
         }
     }
     else
@@ -359,7 +219,7 @@ void NSConsumerHandleRequestDiscover(OCDevAddr * address, NSConsumerDiscoverType
     }
 
     NSInvokeRequest(NULL, OC_REST_DISCOVER, address, NS_DISCOVER_QUERY,
-            NULL, NSProviderDiscoverListener, (void *)callbackData, type);
+            NULL, NSProviderDiscoverListener, (void *)callbackData, NULL, type);
 }
 
 void NSConsumerDiscoveryTaskProcessing(NSTask * task)