Response topic list for GET request
authorch79.cho <ch79.cho@samsung.com>
Wed, 10 Aug 2016 04:48:20 +0000 (13:48 +0900)
committerMadan Lanka <lanka.madan@samsung.com>
Wed, 10 Aug 2016 12:45:13 +0000 (12:45 +0000)
Response function is added for GET request of topic resource.

Change-Id: I846cd424aca475091182e9eece2bed9e1a359a0e
Signed-off-by: ch79.cho <ch79.cho@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/10219
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Madan Lanka <lanka.madan@samsung.com>
service/notification/src/provider/NSProviderListener.c
service/notification/src/provider/NSProviderTopic.c

index 27cf554..7f0af95 100644 (file)
@@ -195,8 +195,7 @@ OCEntityHandlerResult NSEntityHandlerTopicCb(OCEntityHandlerFlag flag,
             NS_LOG(DEBUG, "NSEntityHandlerTopicCb - OC_REST_GET");\r
 \r
             // send consumer's interesting topic list if consumer id exists\r
-            // otherwise send  created / updated topic list\r
-\r
+            // otherwise send  registered topic list\r
             NSPushQueue(TOPIC_SCHEDULER, TASK_SEND_TOPICS,\r
                     NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
 \r
@@ -207,7 +206,8 @@ OCEntityHandlerResult NSEntityHandlerTopicCb(OCEntityHandlerFlag flag,
             // Receive interesting topic list from consumers\r
             NS_LOG(DEBUG, "NSEntityHandlerTopicCb - OC_REST_POST");\r
 \r
-            // Send topic updated message(id=TOPIC) to the consumer who request to post.\r
+            // Send topic notice message(id = TOPIC) to the consumer \r
+            // which requests to post.\r
             NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPICS,\r
                     NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
 \r
index e693a7d..c683240 100644 (file)
@@ -234,6 +234,59 @@ NSResult NSSendTopicUpdationToConsumer(char *consumerId)
     return NS_OK;\r
 }\r
 \r
+NSResult NSSendTopicList(OCEntityHandlerRequest * entityHandlerRequest)\r
+{\r
+    NS_LOG(DEBUG, "NSSendTopicList - IN");\r
+\r
+    char * id = NSGetValueFromQuery(OICStrdup(entityHandlerRequest->query), NS_QUERY_CONSUMER_ID);\r
+    if(!id)\r
+    {\r
+        NS_LOG(DEBUG, "Send registered topic list");\r
+        //TODO: get registered topic list\r
+    }\r
+    else\r
+    {\r
+        NS_LOG(DEBUG, "Send subscribed topic list to consumer");\r
+        //TODO: get subscribed topic list for consumer\r
+    }\r
+\r
+    // make response for the Get Request\r
+    OCEntityHandlerResponse response;\r
+    response.numSendVendorSpecificHeaderOptions = 0;\r
+    memset(response.sendVendorSpecificHeaderOptions, 0,\r
+            sizeof response.sendVendorSpecificHeaderOptions);\r
+    memset(response.resourceUri, 0, sizeof response.resourceUri);\r
+\r
+    OCRepPayload* payload = OCRepPayloadCreate();\r
+    if (!payload)\r
+    {\r
+        NS_LOG(ERROR, "payload is NULL");\r
+        return NS_ERROR;\r
+    }\r
+\r
+    OCRepPayloadSetUri(payload, NS_COLLECTION_TOPIC_URI);\r
+    OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_CONSUMER_ID, id);\r
+    // TODO: add PayLoadSet with topic list got above\r
+\r
+    response.requestHandle = entityHandlerRequest->requestHandle;\r
+    response.resourceHandle = entityHandlerRequest->resource;\r
+    response.persistentBufferFlag = 0;\r
+    response.ehResult = OC_EH_OK;\r
+    response.payload = (OCPayload *) payload;\r
+\r
+    // Send Response\r
+    if (OCDoResponse(&response) != OC_STACK_OK)\r
+    {\r
+        NS_LOG(ERROR, "Fail to response topic list");\r
+        return NS_ERROR;\r
+    }\r
+    OCRepPayloadDestroy(payload);\r
+    NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
+\r
+    NS_LOG(DEBUG, "NSSendTopicList - OUT");\r
+    return NS_OK;\r
+}\r
+\r
 bool NSIsTopicSubscribed(char * consumerId, char * topic)\r
 {\r
     //TODO: implement function\r
@@ -261,6 +314,7 @@ void * NSTopicSchedule(void * ptr)
             {\r
                 case TASK_SEND_TOPICS:\r
                     NS_LOG(DEBUG, "CASE TASK_SEND_TOPICS : ");\r
+                    NSSendTopicList((OCEntityHandlerRequest*) node->taskData);\r
                     break;\r
                 case TASK_SUBSCRIBE_TOPICS:\r
                     NS_LOG(DEBUG, "CASE TASK_SUBSCRIBE_TOPICS : ");\r