mdgd: Add dbus method to delete created group
authorSaurav Babu <saurav.babu@samsung.com>
Mon, 7 May 2018 06:40:23 +0000 (12:10 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Tue, 3 Jul 2018 01:43:26 +0000 (10:43 +0900)
Signed-off-by: Saurav Babu <saurav.babu@samsung.com>
src/mdg-manager/include/mdgd_gdbus_group.h
src/mdg-manager/include/mdgd_group.h
src/mdg-manager/include/mdgd_iot.h
src/mdg-manager/include/mdgd_resource.h
src/mdg-manager/src/mdg_gdbus.xml
src/mdg-manager/src/mdgd_gdbus_group.c
src/mdg-manager/src/mdgd_group.c
src/mdg-manager/src/mdgd_iot.cpp
src/mdg-manager/src/mdgd_resource.c

index 857481582014ca35d087a317a8e51f60fb18b2bf..d5f26b1fd9dd7c299ec773fa7df3798a1036f767 100644 (file)
@@ -43,7 +43,7 @@ gboolean group_leave(Group *group, GDBusMethodInvocation *invocation,
        gpointer user_data);
 
 gboolean group_delete(Group *group, GDBusMethodInvocation *invocation,
-       gpointer user_data);
+       gchar *group_name, gpointer user_data);
 
 gboolean group_device_find(Group *group, GDBusMethodInvocation *invocation,
        gint timeout, gpointer user_data);
index 6adffe0bbd5f6be0554a6abfb25ad8f7ef40dd82..93fe63b25e2da4815e6985f91b64ac7b2cad704c 100644 (file)
@@ -89,7 +89,7 @@ int mdgd_group_initialize();
 
 /* create group and destroy */
 int mdgd_group_create(const char* name);
-int mdgd_group_destroy(mdgd_group_t *handle);
+int mdgd_group_destroy(const char* name);
 
 /* Find Remote groups */
 int mdgd_group_find(int timeout);
index b8b333f1f948f96e98d65a317b5ba93f56e330ed..57d7cabf41300557d8a31a72abdd04359c030d2c 100644 (file)
@@ -52,7 +52,8 @@ typedef struct _mdgd_command_t {
 
 int mdgd_iot_initialize();
 int mdgd_iot_add_resource(mdgd_resource_type_e resource_type, const char *uri);
-int mdgd_iot_delete_resource(mdgd_resource_type_e resource_type);
+int mdgd_iot_delete_resource(mdgd_resource_type_e resource_type,
+                                                        const char *uri);
 int mdgd_iot_discovery_resource(mdgd_resource_type_e resource_type, int timeout, void *user_data);
 int mdgd_iot_send_data(mdgd_resource_type_e resource_type, int timeout,
                                           mdgd_command_t *cmd);
index 3f4020775c0923b90b2b94916fc932256dc283d2..f80137208dd6afeb1856863aba5b730c71cef6e2 100644 (file)
@@ -44,6 +44,8 @@ char *mdgd_resource_get_type(mdgd_resource_type_e resource_type);
 char *mdgd_resource_get_uri_prefix(mdgd_resource_type_e resource_type);
 unsigned char mdgd_resource_get_policies(mdgd_resource_type_e resource_type);
 void mdgd_resource_print_list();
+OCResourceHandle mdgd_resource_get_handle(mdgd_resource_type_e resource_type,
+                                                                                 const char *uri);
 
 #ifdef __cplusplus
 }
index 5aa4c1ee62cfcd718a92d88ca6b99601d747fdb3..e7535bf6de9f77bebcb187835ba09fd0d6c69fa6 100644 (file)
@@ -32,9 +32,8 @@
                        <arg type="i" name="result" direction="out" />
                </method>
                <method name="Delete">
-                       <arg type="i" name="group_count" direction="out" />
-                       <arg type="aa{sv}" name="groups" direction="out" />
-                       <arg type="i" name="result" direction="out" />
+                       <arg type="s" name="group_name" direction="in"/>
+                       <arg type="i" name="result" direction="out"/>
                </method>
                <method name="DeviceFind">
                        <arg type="i" name="timeout" direction="in" />
index 09146b605f9b22d1593c94a7f76116a4fe72d90a..b4c6e5348170f51c881236f653fb9d12fc605f0e 100644 (file)
@@ -91,9 +91,20 @@ gboolean group_leave(Group *group, GDBusMethodInvocation *invocation,
 }
 
 gboolean group_delete(Group *group, GDBusMethodInvocation *invocation,
-       gpointer user_data)
+       gchar *group_name, gpointer user_data)
 {
-       //group_complete_delete(group, invocation, result);
+       gint result = MDGD_ERROR_INVALID_PARAMETER;
+
+       LOG_DEBUG("group delete called using dbus successful");
+
+       if (mdgd_check_group_exist(group_name)) {
+               LOG_DEBUG("Group %s exists", group_name);
+               result = mdgd_group_destroy(group_name);
+               if (MDGD_ERROR_NONE == result)
+                       mdgd_db_group_delete(group_name);
+       }
+
+       group_complete_delete(group, invocation, result);
 
        return TRUE;
 }
index 4a500fcb68aec0eadd3811a93fee19a6973ab50b..7f2544edfadafae51ae1fa6693afb90b0617a23a 100644 (file)
@@ -136,10 +136,13 @@ int mdgd_group_create(const char* name)
        return MDGD_ERROR_NONE;
 }
 
-int mdgd_group_destroy(mdgd_group_t *handle)
+int mdgd_group_destroy(const char* name)
 {
-       int ret = MDGD_ERROR_NONE;
-       NOTUSED(handle);
+       int ret = MDGD_ERROR_UNKNOWN;
+       ret = mdgd_iot_delete_resource(MDGD_RESOURCE_TYPE_GROUP, name);
+       if (ret == MDGD_ERROR_NONE)
+               LOG_DEBUG("Successfully destroyed group %s", name);
+
        return ret;
 }
 
index bad7c83399f7705bf47d88b852e27b9597297855..73ad5e6b581834a561c730d7e428c30d43413bd7 100755 (executable)
@@ -1236,9 +1236,27 @@ int mdgd_iot_send_data(mdgd_resource_type_e resource_type, int timeout,
        return ret;
 }
 
-int mdgd_iot_delete_resource(mdgd_resource_type_e resource_type)
+int mdgd_iot_delete_resource(mdgd_resource_type_e resource_type,
+                                                        const char *uri)
 {
+       OCResourceHandle resourceHandle;
+       std::string uri_path;
+
        //delete resource from resource list using resource_type and index
+
+       uri_path =  std::string(mdgd_resource_get_uri_prefix(resource_type)) +
+                               std::string(uri);
+
+       LOG_DEBUG("[Delete] resource uri is %s", uri_path.c_str());
+
+       resourceHandle = mdgd_resource_get_handle(resource_type, uri_path.c_str());
+
+       OCStackResult result = OCPlatform::unregisterResource(resourceHandle);
+       if (OC_STACK_OK != result) {
+               LOG_ERR("Failed to unregister resource");
+               return MDGD_ERROR_OPERATION_FAILED;
+       }
+
        //delete DB
        return MDGD_ERROR_NONE;
 }
index 0ce33844285635bd02372fde6a0e287f48dde59e..404b03a5ebd7667f02984333c2af796e9a027beb 100644 (file)
@@ -82,3 +82,20 @@ void mdgd_resource_print_list()
        LOG_DEBUG("-------------------Print resource list end-------------------");
 }
 
+OCResourceHandle mdgd_resource_get_handle(mdgd_resource_type_e resource_type,
+                                                                                 const char *uri)
+{
+       mdgd_context_t *mdgd_ctx = mdgd_context_get_context();
+       GList *list;
+
+       LOG_DEBUG("Get Resource handle type %d uri %s", resource_type, uri);
+
+       for (list = mdgd_ctx->resource_list[resource_type]; list != NULL;
+                list = list->next) {
+               mdgd_re_t *re = (mdgd_re_t *)list->data;
+               if (g_strcmp0(re->uri, uri) == 0)
+                       return re->resource;
+       }
+
+       return NULL;
+}