With respect to Rally User Story: US1556
authorJoseph Morrow <joseph.l.morrow@intel.com>
Tue, 9 Sep 2014 18:18:50 +0000 (14:18 -0400)
committerJoseph Morrow <joseph.l.morrow@intel.com>
Tue, 9 Sep 2014 18:18:50 +0000 (14:18 -0400)
 and Rally Task: US1596

Updated ocstack.c to notify observers of this 'stack's presence
whenever any modification or deletion to ANY of this stack's
resource(s) occurs.

Change-Id: I0bdb72f56fa36a94e3d6d6b548f87a6a75a362ca

csdk/stack/src/ocstack.c

index 4830784..73d11a5 100644 (file)
@@ -727,8 +727,11 @@ OCStackResult OCCreateResource(OCResourceHandle *handle,
     result = OC_STACK_OK;
 
     #ifdef WITH_PRESENCE
-    ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
-    OCNotifyObservers(presenceResource.handle);
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
     #endif
 exit:
     if (result != OC_STACK_OK)
@@ -784,6 +787,14 @@ OCStackResult OCBindResource(
         }
     }
 
+    #ifdef WITH_PRESENCE
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
+    #endif
+
     // Unable to add resourceHandle, so return error
     return OC_STACK_ERROR;
 }
@@ -834,6 +845,14 @@ OCStackResult OCUnBindResource(
 
     OC_LOG(INFO, TAG, PCF("resource not found in collection"));
 
+    #ifdef WITH_PRESENCE
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
+    #endif
+
     // Unable to add resourceHandle, so return error
     return OC_STACK_ERROR;
 }
@@ -893,6 +912,14 @@ OCStackResult OCBindResourceTypeToResource(OCResourceHandle handle,
     insertResourceType(resource, pointer);
     result = OC_STACK_OK;
 
+    #ifdef WITH_PRESENCE
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
+    #endif
+
     exit: if (result != OC_STACK_OK) {
         OCFree(pointer);
         OCFree(str);
@@ -953,6 +980,15 @@ OCStackResult OCBindResourceInterfaceToResource(OCResourceHandle handle,
     insertResourceInterface(resource, pointer);
 
     result = OC_STACK_OK;
+
+    #ifdef WITH_PRESENCE
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
+    #endif
+
     exit: if (result != OC_STACK_OK) {
         OCFree(pointer);
         OCFree(str);
@@ -1029,6 +1065,14 @@ OCStackResult OCDeleteResource(OCResourceHandle handle) {
         return OC_STACK_ERROR;
     }
 
+    #ifdef WITH_PRESENCE
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
+    #endif
+
     return OC_STACK_OK;
 }
 
@@ -1239,6 +1283,14 @@ OCStackResult OCBindResourceHandler(OCResourceHandle handle,
     // Bind the handler
     resource->entityHandler = entityHandler;
 
+    #ifdef WITH_PRESENCE
+    if(presenceResource.handle)
+    {
+        ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+        OCNotifyObservers(presenceResource.handle);
+    }
+    #endif
+
     return OC_STACK_OK;
 }