mdgd: Remove group from found group list after it is destroyed
authorSaurav Babu <saurav.babu@samsung.com>
Mon, 7 May 2018 09:04:58 +0000 (14:34 +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/src/mdgd_group.c

index 7f2544edfadafae51ae1fa6693afb90b0617a23a..3aa52e2c48b4095ac7ac42c197773bc0a0d70eed 100644 (file)
@@ -136,16 +136,6 @@ int mdgd_group_create(const char* name)
        return MDGD_ERROR_NONE;
 }
 
-int mdgd_group_destroy(const char* name)
-{
-       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;
-}
-
 static void _free_device_func(gpointer data)
 {
        mdgd_check_null_ret("data", data);
@@ -182,6 +172,34 @@ static void _free_group_func(gpointer data)
        group = NULL;
 }
 
+int mdgd_group_destroy(const char* name)
+{
+       int ret = MDGD_ERROR_UNKNOWN;
+       GList *iter = NULL;
+
+       ret = mdgd_iot_delete_resource(MDGD_RESOURCE_TYPE_GROUP, name);
+       if (ret == MDGD_ERROR_NONE) {
+               LOG_DEBUG("Successfully destroyed group %s", name);
+
+               iter = found_group_list;
+
+               while (iter != NULL) {
+                       mdgd_group_t *group = (mdgd_group_t *)iter->data;
+                       iter = g_list_next(iter);
+
+                       if (group->type == MDGD_GROUP_GROUP_LOCAL &&
+                               g_strcmp0(group->group_name, name) == 0) {
+                               LOG_DEBUG("Remove %s from found group list", name);
+                               found_group_list = g_list_remove(found_group_list, group);
+                               _free_group_func(group);
+                               break;
+                       }
+               }
+       }
+
+       return ret;
+}
+
 static void _mot_enb_dev_list_free_func(gpointer data)
 {
        mdgd_mot_device_t *device = (mdgd_mot_device_t *)data;