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);
/* 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);
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);
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
}
<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" />
}
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;
}
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;
}
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;
}
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;
+}