static void connection_cb (GObject *object, GAsyncResult *res, gpointer user_data) { MyData *md = user_data; GError *error = NULL; md->connection = tracker_sparql_connection_get_finish (res, &error); g_print ("Async connection took: %.6f\n", g_timer_elapsed (md->timer, NULL)); g_timer_start (md->timer); if (!error) { tracker_sparql_connection_query_async (md->connection, "SELECT ?r { ?r a rdfs:Resource }", md->cancellable, query_cb, md); } else { g_critical ("Could not connect: %s", error->message); g_error_free (error); g_main_loop_quit (md->loop); } }
static void do_sparql_query_async_connection_cb (GObject *const object, GAsyncResult *const result, GTask *const task) { g_autoptr(GError) error = NULL; TrackerSparqlConnection *const conn = tracker_sparql_connection_get_finish ( result, &error ); if (error) { g_task_return_error (task, g_error_copy (error)); return; } SparqlQueryWork *const work = sparql_query_work_get (task); work->connection = conn; tracker_sparql_connection_query_async ( conn, work->sparql, g_task_get_cancellable (task), (GAsyncReadyCallback) do_sparql_query_async_cursor_cb, task ); }