Rearrange CRUDN methods in "iotcon-test-basic"
authoryoungman <yman.jung@samsung.com>
Wed, 11 Nov 2015 02:53:51 +0000 (11:53 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Thu, 19 Nov 2015 05:54:46 +0000 (14:54 +0900)
Change-Id: If084073a8cf196f1f09c63efe72d698e7917967e
Signed-off-by: youngman <yman.jung@samsung.com>
lib/icl-resource.c
test/iotcon-test-basic-client.c
test/iotcon-test-basic-server.c

index 04b1060..ec8f3ef 100644 (file)
@@ -559,8 +559,8 @@ API int iotcon_resource_notify(iotcon_resource_h resource,
        else
                obs = icl_dbus_observers_to_gvariant(resource->observers);
 
-       ic_dbus_call_notify_sync(icl_dbus_get_object(), resource->handle, repr_gvar, obs, &ret,
-                       NULL, &error);
+       ic_dbus_call_notify_sync(icl_dbus_get_object(), resource->handle, repr_gvar, obs,
+                       &ret, NULL, &error);
        if (error) {
                ERR("ic_dbus_call_notify_sync() Fail(%s)", error->message);
                ret = icl_dbus_convert_dbus_error(error->code);
index 8e21069..f753e69 100644 (file)
@@ -29,26 +29,68 @@ static GList *device_id_list;
 static void _on_response(iotcon_remote_resource_h resource, iotcon_error_e err,
                iotcon_request_type_e request_type, iotcon_response_h response, void *user_data);
 
-static void _on_response_notify(iotcon_remote_resource_h resource, iotcon_response_h response,
-               void *user_data)
+static void _on_response_notify(iotcon_remote_resource_h resource,
+               iotcon_response_h response, void *user_data)
 {
-       INFO("_on_response_notify");
-
+       int ret;
+       bool opened;
        static int i = 0;
-       i++;
+       iotcon_state_h state;
+       iotcon_representation_h repr;
+       iotcon_response_result_e response_result;
+
+       ret = iotcon_response_get_result(response, &response_result);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_response_get_result() Fail(%d)", ret);
+               return;
+       }
+
+       if (IOTCON_RESPONSE_RESULT_OK != response_result) {
+               ERR("_on_response_observe Response error(%d)", response_result);
+               return;
+       }
+
+       ret = iotcon_response_get_representation(response, &repr);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_response_get_representation() Fail(%d)", ret);
+               return;
+       }
+
+       ret = iotcon_representation_get_state(repr, &state);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_representation_get_state() Fail(%d)", ret);
+               return;
+       }
+
+       ret = iotcon_state_get_bool(state, "opened", &opened);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_state_get_bool() Fail(%d)", ret);
+               return;
+       }
+
+       INFO("notify_cb information");
+       switch (opened) {
+       case true:
+               INFO("[Door] opened.");
+               break;
+       case false:
+               INFO("[Door] closed.");
+               break;
+       default:
+               break;
+       }
 
-       if (2 == i) {
+       if (5 == i++) {
                iotcon_remote_resource_unset_notify_cb(resource);
                iotcon_remote_resource_destroy(resource);
        }
 }
 
-static void _on_response_delete(iotcon_remote_resource_h resource, iotcon_response_h response,
-               void *user_data)
+static void _on_response_delete(iotcon_remote_resource_h resource,
+               iotcon_response_h response, void *user_data)
 {
        int ret;
        iotcon_response_result_e response_result;
-       iotcon_remote_resource_h door_resource = user_data;
 
        ret = iotcon_response_get_result(response, &response_result);
        if (IOTCON_ERROR_NONE != ret) {
@@ -65,16 +107,11 @@ static void _on_response_delete(iotcon_remote_resource_h resource, iotcon_respon
 
        /* delete callback operations */
 
-       ret = iotcon_remote_resource_set_notify_cb(door_resource, IOTCON_OBSERVE_ALL, NULL,
-                       _on_response, NULL);
-       if (IOTCON_ERROR_NONE != ret)
-               ERR("iotcon_remote_resource_set_notify_cb() Fail(%d)", ret);
-
        iotcon_remote_resource_destroy(resource);
 }
 
-static void _on_response_post(iotcon_remote_resource_h resource, iotcon_response_h response,
-               void *user_data)
+static void _on_response_post(iotcon_remote_resource_h resource,
+               iotcon_response_h response, void *user_data)
 {
        iotcon_state_h recv_state;
        char *host, *created_uri_path;
@@ -82,7 +119,7 @@ static void _on_response_post(iotcon_remote_resource_h resource, iotcon_response
        iotcon_connectivity_type_e connectivity_type;
        iotcon_response_result_e response_result;
        iotcon_resource_types_h types = NULL;
-       iotcon_remote_resource_h new_door_resource, door_resource;
+       iotcon_remote_resource_h new_door_resource;
        iotcon_representation_h recv_repr = NULL;
 
        ret = iotcon_response_get_result(response, &response_result);
@@ -148,22 +185,12 @@ static void _on_response_post(iotcon_remote_resource_h resource, iotcon_response
                return;
        }
 
-       ret = iotcon_remote_resource_clone(resource, &door_resource);
-       if (IOTCON_ERROR_NONE != ret) {
-               ERR("iotcon_remote_resource_clone() Fail(%d)", ret);
-               iotcon_remote_resource_destroy(new_door_resource);
-               return;
-       }
-
-       ret = iotcon_remote_resource_delete(new_door_resource, _on_response, door_resource);
+       ret = iotcon_remote_resource_delete(new_door_resource, _on_response, NULL);
        if (IOTCON_ERROR_NONE != ret) {
                ERR("iotcon_remote_resource_delete() Fail(%d)", ret);
-               iotcon_remote_resource_destroy(door_resource);
                iotcon_remote_resource_destroy(new_door_resource);
                return;
        }
-
-       iotcon_remote_resource_destroy(resource);
 }
 
 static void _on_response_put(iotcon_remote_resource_h resource, iotcon_response_h response,
@@ -257,7 +284,7 @@ static void _on_response_get(iotcon_remote_resource_h resource,
                return;
        }
 
-       ret = iotcon_state_set_bool(send_state, "opened", true);
+       ret = iotcon_state_set_bool(send_state, "opened", !opened);
        if (IOTCON_ERROR_NONE != ret) {
                ERR("iotcon_state_set_bool() Fail(%d)", ret);
                iotcon_state_destroy(send_state);
@@ -533,36 +560,41 @@ static void _found_resource(iotcon_remote_resource_h resource, iotcon_error_e re
                        strlen(DOOR_RESOURCE_URI_PREFIX))) {
                iotcon_query_h query;
 
-               ret = iotcon_query_create(&query);
+               ret = iotcon_remote_resource_clone(resource, &resource_clone);
                if (IOTCON_ERROR_NONE != ret) {
-                       ERR("iotcon_query_create() Fail(%d)", ret);
+                       ERR("iotcon_remote_resource_clone() Fail(%d)", ret);
+                       iotcon_query_destroy(query);
                        device_id_list = g_list_remove(device_id_list, door_resource_device_id);
                        free(door_resource_device_id);
                        return;
                }
 
-               ret = iotcon_query_add(query, "query_key", "query_value");
+               /* Set NOTIFY callback */
+               ret = iotcon_remote_resource_set_notify_cb(resource_clone, IOTCON_OBSERVE, NULL,
+                               _on_response, NULL);
                if (IOTCON_ERROR_NONE != ret) {
-                       ERR("iotcon_query_add() Fail(%d)", ret);
-                       iotcon_query_destroy(query);
+                       ERR("iotcon_remote_resource_set_notify_cb() Fail(%d)", ret);
                        device_id_list = g_list_remove(device_id_list, door_resource_device_id);
                        free(door_resource_device_id);
                        return;
                }
 
-               ret = iotcon_remote_resource_clone(resource, &resource_clone);
+               ret = iotcon_query_create(&query);
                if (IOTCON_ERROR_NONE != ret) {
-                       ERR("iotcon_remote_resource_clone() Fail(%d)", ret);
-                       iotcon_query_destroy(query);
+                       ERR("iotcon_query_create() Fail(%d)", ret);
                        device_id_list = g_list_remove(device_id_list, door_resource_device_id);
                        free(door_resource_device_id);
                        return;
                }
 
-               /* get the resource host address */
-               iotcon_remote_resource_get_host_address(resource_clone, &resource_host);
-               INFO("[%s] resource host : %s", resource_uri_path, resource_host);
-
+               ret = iotcon_query_add(query, "query_key", "query_value");
+               if (IOTCON_ERROR_NONE != ret) {
+                       ERR("iotcon_query_add() Fail(%d)", ret);
+                       iotcon_query_destroy(query);
+                       device_id_list = g_list_remove(device_id_list, door_resource_device_id);
+                       free(door_resource_device_id);
+                       return;
+               }
 
                /* send GET Request */
                ret = iotcon_remote_resource_get(resource_clone, query, _on_response, NULL);
index 8d4e8e7..7891df7 100644 (file)
@@ -277,31 +277,72 @@ static void _request_handler_put(door_resource_s *door, iotcon_request_h request
        iotcon_state_destroy(resp_state);
 
        ret = _send_response(response, resp_repr, IOTCON_RESPONSE_RESULT_OK);
-       if (0 != ret)
+       if (0 != ret) {
                ERR("_send_response() Fail(%d)", ret);
+               iotcon_representation_destroy(resp_repr);
+               return;
+       }
+
+       /* notify */
+       ret = iotcon_resource_notify(door->handle, resp_repr, door->observers);
+       if (IOTCON_ERROR_NONE != ret)
+               ERR("iotcon_resource_notify() Fail(%d)", ret);
 
        iotcon_representation_destroy(resp_repr);
 }
 
-static gboolean _notifier(gpointer user_data)
+static gboolean _door_state_changer(gpointer user_data)
 {
        int ret;
        static int i = 0;
-       door_resource_s *door;
+       door_resource_s *door = user_data;
+       iotcon_state_h state;
        iotcon_representation_h repr;
 
-       door = user_data;
-
-       if ((5 == i++) || !(door->observers))
+       if ((5 == i++) || NULL == door->observers)
                return G_SOURCE_REMOVE;
 
-       INFO("NOTIFY!");
+       if (false == door->state) {
+               door->state = true;
+               INFO("[Door] closed -> opened");
+       } else {
+               door->state = false;
+               INFO("[Door] opened -> closed");
+       }
+
        ret = iotcon_representation_create(&repr);
        if (IOTCON_ERROR_NONE != ret) {
                ERR("iotcon_representation_create() Fail(%d)", ret);
                return G_SOURCE_REMOVE;
        }
 
+       ret = iotcon_state_create(&state);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_state_create() Fail(%d)", ret);
+               iotcon_representation_destroy(repr);
+               return G_SOURCE_REMOVE;
+       }
+
+       ret = iotcon_state_set_bool(state, "opened", door->state);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_state_set_bool() Fail(%d)", ret);
+               iotcon_state_destroy(state);
+               iotcon_representation_destroy(repr);
+               return G_SOURCE_REMOVE;
+       }
+
+       ret = iotcon_representation_set_state(repr, state);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_representation_set_state() Fail(%d)", ret);
+               iotcon_state_destroy(state);
+               iotcon_representation_destroy(repr);
+               return G_SOURCE_REMOVE;
+       }
+
+       iotcon_state_destroy(state);
+
+       INFO("NOTIFY!");
+
        ret = iotcon_resource_notify(door->handle, repr, door->observers);
        if (IOTCON_ERROR_NONE != ret) {
                ERR("iotcon_resource_notify() Fail(%d)", ret);
@@ -310,7 +351,6 @@ static gboolean _notifier(gpointer user_data)
        }
 
        iotcon_representation_destroy(repr);
-
        return G_SOURCE_CONTINUE;
 }
 
@@ -377,7 +417,7 @@ static void _request_handler_post(door_resource_s *door, iotcon_response_h respo
        iotcon_representation_destroy(resp_repr);
 
        /* add observe */
-       g_timeout_add_seconds(5, _notifier, door);
+       g_timeout_add_seconds(5, _door_state_changer, door);
 }
 
 static void _request_handler_delete(iotcon_resource_h resource,
@@ -428,7 +468,12 @@ static void _request_handler(iotcon_resource_h resource, iotcon_request_h reques
 
        RET_IF(NULL == request);
 
-       door = user_data;
+       ret = iotcon_request_get_host_address(request, &host_address);
+       if (IOTCON_ERROR_NONE != ret) {
+               ERR("iotcon_request_get_host_address() Fail(%d)", ret);
+               return;
+       }
+       INFO("host_address : %s", host_address);
 
        ret = iotcon_request_get_query(request, &query);
        if (IOTCON_ERROR_NONE != ret) {
@@ -450,6 +495,8 @@ static void _request_handler(iotcon_resource_h resource, iotcon_request_h reques
                return;
        }
 
+       door = user_data;
+
        if (IOTCON_REQUEST_GET & types)
                _request_handler_get(door, response);
 
@@ -464,13 +511,6 @@ static void _request_handler(iotcon_resource_h resource, iotcon_request_h reques
 
        iotcon_response_destroy(response);
 
-       ret = iotcon_request_get_host_address(request, &host_address);
-       if (IOTCON_ERROR_NONE != ret) {
-               ERR("iotcon_request_get_host_address() Fail(%d)", ret);
-               return;
-       }
-       INFO("host_address : %s", host_address);
-
        if (IOTCON_REQUEST_OBSERVE & types) {
                ret = iotcon_request_get_observe_action(request, &observe_action);
                if (IOTCON_ERROR_NONE != ret) {
@@ -485,6 +525,10 @@ static void _request_handler(iotcon_resource_h resource, iotcon_request_h reques
                                return;
                        }
                        ret = iotcon_observers_add(door->observers, observe_id);
+                       if (IOTCON_ERROR_NONE != ret) {
+                               ERR("iotcon_observers_add() Fail(%d)", ret);
+                               return;
+                       }
                } else if (IOTCON_OBSERVE_DEREGISTER == observe_action) {
                        ret = iotcon_request_get_observe_id(request, &observe_id);
                        if (IOTCON_ERROR_NONE != ret) {
@@ -505,11 +549,11 @@ static gboolean _presence_timer(gpointer user_data)
        static int i = 0;
        i++;
        if (i % 2)
-               iotcon_start_presence(10);
-       else
                iotcon_stop_presence();
+       else
+               iotcon_start_presence(10);
 
-       if (4 == i)
+       if (3 == i)
                return G_SOURCE_REMOVE;
 
        return G_SOURCE_CONTINUE;
@@ -545,6 +589,7 @@ int main(int argc, char **argv)
 
        /* add presence */
        g_timeout_add_seconds(10, _presence_timer, NULL);
+       iotcon_start_presence(10);
 
        /* create new door resource */
        my_door.handle = _create_door_resource(my_door.uri_path, my_door.type, my_door.ifaces,