mdgd: Eject devices before destroying group
authorSaurav Babu <saurav.babu@samsung.com>
Wed, 9 May 2018 03:06:37 +0000 (08:36 +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 3aa52e2c48b4095ac7ac42c197773bc0a0d70eed..0c2f84812961d23bb84ac9eb4256143e3cf7d48b 100644 (file)
@@ -176,7 +176,30 @@ int mdgd_group_destroy(const char* name)
 {
        int ret = MDGD_ERROR_UNKNOWN;
        GList *iter = NULL;
+       bool found = FALSE;
+       mdgd_grp_t *grp = NULL;
 
+       mdgd_context_t *mdgd_ctx = mdgd_context_get_context();
+       mdgd_check_null_ret_error("mdgd_ctx", mdgd_ctx, -1);
+
+       iter = mdgd_ctx->grp_list;
+       while (iter != NULL) {
+               grp = (mdgd_grp_t *)iter->data;
+               if (g_strcmp0(grp->name, name) == 0) {
+                       GList *device_iter = grp->device_list;
+                       while (device_iter != NULL) {
+                               char *device_uuid = (char *)device_iter->data;
+                               mdgd_group_eject(name, mdgd_ctx->device_uuid, device_uuid);
+
+                               device_iter = g_list_next(device_iter);
+                       }
+
+                       found = TRUE;
+                       break;
+               }
+
+               iter = g_list_next(iter);
+       }
        ret = mdgd_iot_delete_resource(MDGD_RESOURCE_TYPE_GROUP, name);
        if (ret == MDGD_ERROR_NONE) {
                LOG_DEBUG("Successfully destroyed group %s", name);
@@ -195,6 +218,9 @@ int mdgd_group_destroy(const char* name)
                                break;
                        }
                }
+
+               if (found == TRUE)
+                       mdgd_ctx->grp_list = g_list_remove(mdgd_ctx->grp_list, grp);
        }
 
        return ret;