static void gom_repository_find_one_cb (GObject *object, GAsyncResult *result, gpointer user_data) { GSimpleAsyncResult *simple = user_data; GomResourceGroup *group; GomRepository *repository = (GomRepository *)object; GError *error = NULL; g_return_if_fail(GOM_IS_REPOSITORY(repository)); g_return_if_fail(G_IS_SIMPLE_ASYNC_RESULT(simple)); if (!(group = gom_repository_find_finish(repository, result, &error))) { g_simple_async_result_take_error(simple, error); g_simple_async_result_complete_in_idle(simple); g_object_unref(simple); return; } if (!gom_resource_group_get_count(group)) { g_simple_async_result_set_error(simple, GOM_ERROR, GOM_ERROR_REPOSITORY_EMPTY_RESULT, _("No resources were found.")); g_simple_async_result_complete_in_idle(simple); g_object_unref(simple); g_object_unref(group); return; } gom_resource_group_fetch_async(group, 0, 1, gom_repository_find_one_fetch_cb, simple); g_object_unref(group); }
/** * catch_resource_group_fetch_async: * @group: (in): A #CatchResourceGroup. * @index_: (in): The start index to fetch. * @count: (in): The number of resources to fetch starting from @index_. * @callback: (in): A callback to execute upon completion. * @user_data: (in): User data for @callback. * * Asynchronously requests that @count resources starting from @index_ be * loaded from either the remote API or the local SQLite database. @callback * is responsible for calling catch_resource_group_fetch_finish(). * * Once this operation has completed, you may access the loaded resource * using catch_resource_group_get_resource(). */ void catch_resource_group_fetch_async (CatchResourceGroup *group, guint index_, guint count, GAsyncReadyCallback callback, gpointer user_data) { CatchResourceGroupPrivate *priv; GSimpleAsyncResult *simple; ENTRY; g_return_if_fail(CATCH_IS_RESOURCE_GROUP(group)); g_return_if_fail(callback != NULL); priv = group->priv; simple = g_simple_async_result_new(G_OBJECT(group), callback, user_data, catch_resource_group_fetch_async); if (priv->group) { gom_resource_group_fetch_async(priv->group, index_, count, catch_resource_group_fetch_cb, simple); } else { catch_resource_group_api_fetch_async(group, index_, count, callback, user_data); } EXIT; }