Correct observe callback function in occlient.
authorZiran Sun <ziran.sun@samsung.com>
Mon, 12 Sep 2016 12:42:45 +0000 (13:42 +0100)
committerZiran Sun <ziran.sun@samsung.com>
Mon, 10 Oct 2016 14:35:01 +0000 (14:35 +0000)
1. For observe register request, Sequence number received
in client response falls in range 0 - MAX_SEQUENCE_NUMBER.
2. For observe deregister request and or any failed requests,
the client sequence number value is MAX_SEQUENCE_NUMBER + 1.

Change-Id: Idcc0775179e17ce6df85fb93f127336fede9a42a
Signed-off-by: Ziran Sun <ziran.sun@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/11695
Reviewed-by: Habib Virji <habib.virji@samsung.com>
Reviewed-by: Phil Coval <philippe.coval@osg.samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
(cherry picked from commit 7ed91f143c91ce4d7522faad5f772e55a41ac0da)
Reviewed-on: https://gerrit.iotivity.org/gerrit/12789

cloud/samples/client/airconditioner/aircon_controller.cpp
cloud/samples/client/group_invite/group_invite.cpp
cloud/samples/client/messagequeue/mq_subscriber.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/occlient.cpp
resource/csdk/stack/samples/tizen/SimpleClientServer/occlient.cpp
resource/examples/simpleclient.cpp
resource/examples/winuiclient.cpp

index 2ae86a4..344ac22 100644 (file)
@@ -13,8 +13,6 @@
 #include <OCApi.h>
 #include <OCPlatform.h>
 
-#define maxSequenceNumber 0xFFFFFF
-
 using namespace OC;
 using namespace std;
 
@@ -118,7 +116,7 @@ void onObserve(const HeaderOptions /*headerOptions*/, const OCRepresentation &re
 {
     try
     {
-        if (eCode == OC_STACK_OK && sequenceNumber != maxSequenceNumber + 1)
+        if (eCode == OC_STACK_OK && sequenceNumber <= MAX_SEQUENCE_NUMBER)
         {
             if (sequenceNumber == OC_OBSERVE_REGISTER)
             {
index 812e76e..ec85e5e 100644 (file)
@@ -37,8 +37,6 @@
 using namespace std;
 using namespace OC;
 
-#define maxSequenceNumber 0xFFFFFF
-
 void printRepresentation(OCRepresentation rep)
 {
     for (auto itr = rep.begin(); itr != rep.end(); ++itr)
@@ -102,7 +100,7 @@ void onObserve(const HeaderOptions /*headerOptions*/, const OCRepresentation &re
 {
     try
     {
-        if (eCode == OC_STACK_OK && sequenceNumber != maxSequenceNumber + 1)
+        if (eCode == OC_STACK_OK && sequenceNumber <= MAX_SEQUENCE_NUMBER)
         {
             if (sequenceNumber == OC_OBSERVE_REGISTER)
             {
@@ -392,4 +390,4 @@ int main(int argc, char *argv[])
 
 exit:
     return 0;
-}
\ No newline at end of file
+}
index 4263760..fbebe6e 100644 (file)
@@ -41,7 +41,6 @@ using namespace OC;
 using namespace std;
 
 #define DEFAULT_MQ_BROKER_URI "/oic/ps"
-#define maxSequenceNumber 0xFFFFFF
 
 OC::OCResource::Ptr g_mqBrokerResource = nullptr;
 OC::OCResource::Ptr g_mqSelectedTopicResource = nullptr;
@@ -96,7 +95,7 @@ void subscribeCB(const HeaderOptions &,
 {
     try
     {
-        if (eCode == OC_STACK_OK && sequenceNumber != maxSequenceNumber + 1)
+        if (eCode == OC_STACK_OK && sequenceNumber <= MAX_SEQUENCE_NUMBER)
         {
             if (sequenceNumber == OC_OBSERVE_REGISTER)
             {
@@ -307,4 +306,4 @@ int main(int argc, char *argv[])
 
 exit:
     return 0;
-}
\ No newline at end of file
+}
index 3c5470f..91e445a 100644 (file)
@@ -289,45 +289,46 @@ OCStackApplicationResult obsReqCB(void* ctx, OCDoHandle handle,
 
     if (clientResponse)
     {
-        OIC_LOG_V(INFO, TAG, "StackResult: %s",  getResult(clientResponse->result));
-        OIC_LOG_V(INFO, TAG, "SEQUENCE NUMBER: %d", clientResponse->sequenceNumber);
-        OIC_LOG_V(INFO, TAG, "Callback Context for OBSERVE notification recvd successfully %d",
-                gNumObserveNotifies);
-        OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
-        OIC_LOG(INFO, TAG, ("=============> Obs Response"));
-        gNumObserveNotifies++;
-        if (gNumObserveNotifies > 15) //large number to test observing in DELETE case.
+        if (clientResponse->sequenceNumber <= MAX_SEQUENCE_NUMBER)
         {
-            if (TestCase == TEST_OBS_REQ_NON || TestCase == TEST_OBS_REQ_CON)
+            if (clientResponse->sequenceNumber == OC_OBSERVE_REGISTER)
             {
-                OIC_LOG(ERROR, TAG, "Cancelling with LOW QOS");
-                if (OCCancel (handle, OC_LOW_QOS, NULL, 0) != OC_STACK_OK)
-                {
-                    OIC_LOG(ERROR, TAG, "Observe cancel error");
-                }
-                return OC_STACK_DELETE_TRANSACTION;
+                OIC_LOG(INFO, TAG, "This also serves as a registration confirmation.");
             }
-            else if (TestCase == TEST_OBS_REQ_NON_CANCEL_IMM)
+
+            OIC_LOG_V(INFO, TAG, "StackResult: %s",  getResult(clientResponse->result));
+            OIC_LOG_V(INFO, TAG, "SEQUENCE NUMBER: %d", clientResponse->sequenceNumber);
+            OIC_LOG_V(INFO, TAG, "Callback Context for OBSERVE notification recvd successfully %d",
+                    gNumObserveNotifies);
+            OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
+            OIC_LOG(INFO, TAG, ("=============> Obs Response"));
+            gNumObserveNotifies++;
+
+            if (gNumObserveNotifies > 15) //large number to test observing in DELETE case.
             {
-                OIC_LOG(ERROR, TAG, "Cancelling with HIGH QOS");
-                if (OCCancel (handle, OC_HIGH_QOS, NULL, 0) != OC_STACK_OK)
+                if (TestCase == TEST_OBS_REQ_NON || TestCase == TEST_OBS_REQ_CON)
+                {
+                    OIC_LOG(ERROR, TAG, "Cancelling with LOW QOS");
+                    if (OCCancel (handle, OC_LOW_QOS, NULL, 0) != OC_STACK_OK)
+                    {
+                        OIC_LOG(ERROR, TAG, "Observe cancel error");
+                    }
+                    return OC_STACK_DELETE_TRANSACTION;
+                }
+                else if (TestCase == TEST_OBS_REQ_NON_CANCEL_IMM)
                 {
-                    OIC_LOG(ERROR, TAG, "Observe cancel error");
+                    OIC_LOG(ERROR, TAG, "Cancelling with HIGH QOS");
+                    if (OCCancel (handle, OC_HIGH_QOS, NULL, 0) != OC_STACK_OK)
+                    {
+                        OIC_LOG(ERROR, TAG, "Observe cancel error");
+                    }
                 }
             }
         }
-        if (clientResponse->sequenceNumber == OC_OBSERVE_REGISTER)
-        {
-            OIC_LOG(INFO, TAG, "This also serves as a registration confirmation");
-        }
-        else if (clientResponse->sequenceNumber == OC_OBSERVE_DEREGISTER)
-        {
-            OIC_LOG(INFO, TAG, "This also serves as a deregistration confirmation");
-            return OC_STACK_DELETE_TRANSACTION;
-        }
-        else if (clientResponse->sequenceNumber == OC_OBSERVE_NO_OPTION)
+        else
         {
-            OIC_LOG(INFO, TAG, "This also tells you that registration/deregistration failed");
+            OIC_LOG(INFO, TAG, "No observe option header is returned in the response.");
+            OIC_LOG(INFO, TAG, "For a registration request, it means the registration failed");
             return OC_STACK_DELETE_TRANSACTION;
         }
     }
index 8b3d86e..fe1f95f 100644 (file)
@@ -289,41 +289,42 @@ OCStackApplicationResult obsReqCB(void* ctx, OCDoHandle /*handle*/,
 
     if (clientResponse)
     {
-        cout << "\nStackResult: " << getResult(clientResponse->result);
-        cout << "\nSEQUENCE NUMBER: " << clientResponse->sequenceNumber;
-        cout << "\nCallback Context for OBSERVE notification recvd successfully ";
-        //OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
-        gNumObserveNotifies++;
-        if (gNumObserveNotifies == 15) //large number to test observing in DELETE case.
+        if (clientResponse->sequenceNumber <= MAX_SEQUENCE_NUMBER)
         {
-            if (g_testCase == TEST_OBS_REQ_NON || g_testCase == TEST_OBS_REQ_CON)
+            if (clientResponse->sequenceNumber == OC_OBSERVE_REGISTER)
             {
-                if (OCCancel (gObserveDoHandle, OC_LOW_QOS, NULL, 0) != OC_STACK_OK)
-                {
-                    cout << "\nObserve cancel error";
-                }
-                return OC_STACK_DELETE_TRANSACTION;
+                cout << "This also serves as a registration confirmation" << endl;
             }
-            else if (g_testCase == TEST_OBS_REQ_NON_CANCEL_IMM)
+
+            cout << "\nStackResult: " << getResult(clientResponse->result);
+            cout << "\nSEQUENCE NUMBER: " << clientResponse->sequenceNumber;
+            cout << "\nCallback Context for OBSERVE notification recvd successfully ";
+            //OIC_LOG_PAYLOAD(INFO, clientResponse->payload);
+            gNumObserveNotifies++;
+
+            if (gNumObserveNotifies == 15) //large number to test observing in DELETE case.
             {
-                if (OCCancel (gObserveDoHandle, OC_HIGH_QOS, NULL, 0) != OC_STACK_OK)
+                if (g_testCase == TEST_OBS_REQ_NON || g_testCase == TEST_OBS_REQ_CON)
+                {
+                    if (OCCancel(gObserveDoHandle, OC_LOW_QOS, NULL, 0) != OC_STACK_OK)
+                    {
+                        cout << "Observe cancel error" << endl;
+                    }
+                    return OC_STACK_DELETE_TRANSACTION;
+                }
+                else if (g_testCase == TEST_OBS_REQ_NON_CANCEL_IMM)
                 {
-                    cout << "\nObserve cancel error";
+                    if (OCCancel(gObserveDoHandle, OC_HIGH_QOS, NULL, 0) != OC_STACK_OK)
+                    {
+                        cout << "\nObserve cancel error";
+                    }
                 }
             }
         }
-        if (clientResponse->sequenceNumber == OC_OBSERVE_REGISTER)
-        {
-            cout << "\nThis also serves as a registration confirmation";
-        }
-        else if (clientResponse->sequenceNumber == OC_OBSERVE_DEREGISTER)
-        {
-            cout << "\nThis also serves as a deregistration confirmation";
-            return OC_STACK_DELETE_TRANSACTION;
-        }
-        else if (clientResponse->sequenceNumber == OC_OBSERVE_NO_OPTION)
+        else
         {
-            cout << "\nThis also tells you that registration/deregistration failed";
+            OIC_LOG(INFO, TAG, "No observe option header is returned in the response.");
+            OIC_LOG(INFO, TAG, "For a registration request, it means the registration failed");
             return OC_STACK_DELETE_TRANSACTION;
         }
     }
index a2997bc..924e88c 100644 (file)
@@ -38,8 +38,6 @@
 #include "OCPlatform.h"
 #include "OCApi.h"
 
-#define maxSequenceNumber 0xFFFFFF
-
 using namespace OC;
 
 static const char* SVR_DB_FILE_NAME = "./oic_svr_db_client.dat";
@@ -77,7 +75,7 @@ void onObserve(const HeaderOptions /*headerOptions*/, const OCRepresentation& re
 {
     try
     {
-        if(eCode == OC_STACK_OK && sequenceNumber != maxSequenceNumber + 1)
+        if(eCode == OC_STACK_OK && sequenceNumber <= MAX_SEQUENCE_NUMBER)
         {
             if(sequenceNumber == OC_OBSERVE_REGISTER)
             {
@@ -109,7 +107,9 @@ void onObserve(const HeaderOptions /*headerOptions*/, const OCRepresentation& re
         {
             if(eCode == OC_STACK_OK)
             {
-                std::cout << "Observe registration failed or de-registration action failed/succeeded" << std::endl;
+                std::cout << "No observe option header is returned in the response." << std::endl;
+                std::cout << "For a registration request, it means the registration failed"
+                        << std::endl;
             }
             else
             {
index 87a7b6a..1b892cd 100644 (file)
@@ -189,7 +189,7 @@ void WinUIClientApp::onGet(const HeaderOptions& /*headerOptions*/, const OCRepre
 {\r
     try\r
     {\r
-        if (eCode == OC_STACK_OK)\r
+        if (OC_STACK_OK == eCode)\r
         {\r
             std::cout << "GET request was successful" << std::endl;\r
             std::cout << "Resource URI: " << rep.getUri() << std::endl;\r
@@ -241,7 +241,7 @@ void WinUIClientApp::onPut(const HeaderOptions& /*headerOptions*/, const OCRepre
 {\r
     try\r
     {\r
-        if (eCode == OC_STACK_OK || eCode == OC_STACK_RESOURCE_CHANGED)\r
+        if (OC_STACK_OK == eCode || OC_STACK_RESOURCE_CHANGED == eCode)\r
         {\r
             std::cout << "PUT request was successful" << std::endl;\r
 \r
@@ -288,8 +288,8 @@ void WinUIClientApp::onPost(const HeaderOptions& /*headerOptions*/,
 {\r
     try\r
     {\r
-        if (eCode == OC_STACK_OK || eCode == OC_STACK_RESOURCE_CREATED\r
-                || OC_STACK_RESOURCE_CHANGED)\r
+        if (OC_STACK_OK == eCode || (OC_STACK_RESOURCE_CREATED == eCode\r
+                || OC_STACK_RESOURCE_CHANGED == eCode))\r
         {\r
             std::cout << "POST request was successful" << std::endl;\r
 \r
@@ -327,7 +327,7 @@ void WinUIClientApp::onPost2(const HeaderOptions& /*headerOptions*/,
 {\r
     try\r
     {\r
-        if (eCode == OC_STACK_OK || eCode == OC_STACK_RESOURCE_CREATED)\r
+        if (OC_STACK_OK == eCode || OC_STACK_RESOURCE_CREATED == eCode)\r
         {\r
             std::cout << "POST request was successful" << std::endl;\r
 \r
@@ -366,16 +366,12 @@ void WinUIClientApp::onObserve(const HeaderOptions /*headerOptions*/, const OCRe
 {\r
     try\r
     {\r
-        if (eCode == OC_STACK_OK && sequenceNumber != OC_OBSERVE_NO_OPTION)\r
+        if (OC_STACK_OK == eCode && sequenceNumber <= MAX_SEQUENCE_NUMBER)\r
         {\r
             if (sequenceNumber == OC_OBSERVE_REGISTER)\r
             {\r
                 std::cout << "Observe registration action is successful" << std::endl;\r
             }\r
-            else if (sequenceNumber == OC_OBSERVE_DEREGISTER)\r
-            {\r
-                std::cout << "Observe De-registration action is successful" << std::endl;\r
-            }\r
 \r
             std::cout << "OBSERVE RESULT:"<<std::endl;\r
             std::cout << "\tSequenceNumber: "<< sequenceNumber << std::endl;\r
@@ -393,9 +389,11 @@ void WinUIClientApp::onObserve(const HeaderOptions /*headerOptions*/, const OCRe
         }\r
         else\r
         {\r
-            if (sequenceNumber == OC_OBSERVE_NO_OPTION)\r
+            if (OC_STACK_OK == eCode)\r
             {\r
-                std::cout << "Observe registration or de-registration action is failed" << std::endl;\r
+                std::cout << "No observe option header is returned in the response." << std::endl;\r
+                std::cout << "For a registration request, it means the registration failed"\r
+                        << std::endl;\r
             }\r
             else\r
             {\r