[tracker/sam/errors] libtracker-sparql: Map GError codes to DBus error codes



commit 077ced743d0a72797c2fdcf4f9823d4fd268228a
Author: Sam Thursfield <sam afuera me uk>
Date:   Fri May 1 17:36:15 2020 +0200

    libtracker-sparql: Map GError codes to DBus error codes
    
    DBus errors before:
    
        gi.repository.GLib.GError: tracker-sparql-error-quark: 
GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._tracker_2dsparql_2derror_2dquark.Code0: Parser error at byte 
0: Expected Query (0)
    
    DBus errors now:
    
        gi.repository.GLib.GError: tracker-sparql-error-quark: 
GDBus.Error:org.freedesktop.Tracker.Error.Parse: Parser error at byte 0: Expected Query (0)

 src/libtracker-sparql/tracker-connection.c | 13 ++++++++++++-
 src/libtracker-sparql/tracker-connection.h | 17 +++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/src/libtracker-sparql/tracker-connection.c b/src/libtracker-sparql/tracker-connection.c
index a528b5dcb..04e284e5b 100644
--- a/src/libtracker-sparql/tracker-connection.c
+++ b/src/libtracker-sparql/tracker-connection.c
@@ -24,7 +24,18 @@
 G_DEFINE_ABSTRACT_TYPE (TrackerSparqlConnection, tracker_sparql_connection,
                         G_TYPE_OBJECT)
 
-G_DEFINE_QUARK (tracker-sparql-error-quark, tracker_sparql_error)
+G_STATIC_ASSERT (G_N_ELEMENTS (tracker_sparql_error_entries) == TRACKER_SPARQL_N_ERRORS);
+
+GQuark
+tracker_sparql_error_quark (void)
+{
+       static volatile gsize quark_volatile = 0;
+       g_dbus_error_register_error_domain ("tracker-sparql-error-quark",
+                                           &quark_volatile,
+                                           tracker_sparql_error_entries,
+                                           G_N_ELEMENTS (tracker_sparql_error_entries));
+       return (GQuark) quark_volatile;
+}
 
 static void
 tracker_sparql_connection_init (TrackerSparqlConnection *connection)
diff --git a/src/libtracker-sparql/tracker-connection.h b/src/libtracker-sparql/tracker-connection.h
index 9d14b1697..425c38604 100644
--- a/src/libtracker-sparql/tracker-connection.h
+++ b/src/libtracker-sparql/tracker-connection.h
@@ -79,6 +79,8 @@ G_DECLARE_DERIVABLE_TYPE (TrackerSparqlConnection,
  * @TRACKER_SPARQL_ERROR_INTERNAL: Internal error.
  * @TRACKER_SPARQL_ERROR_UNSUPPORTED: Unsupported feature or method.
  * @TRACKER_SPARQL_ERROR_UNKNOWN_GRAPH: Unknown graph.
+ * @TRACKER_SPARQL_ERROR_ONTOLOGY_NOT_FOUND: The specified ontology wasn't found.
+ * @TRACKER_SPARQL_N_ERRORS: The total number of error codes.
  *
  * Error domain for Tracker Sparql. Errors in this domain will be from the
  * #TrackerSparqlError enumeration. See #GError for more information on error
@@ -95,8 +97,23 @@ typedef enum {
        TRACKER_SPARQL_ERROR_UNSUPPORTED,
        TRACKER_SPARQL_ERROR_UNKNOWN_GRAPH,
        TRACKER_SPARQL_ERROR_ONTOLOGY_NOT_FOUND,
+       TRACKER_SPARQL_N_ERRORS,
 } TrackerSparqlError;
 
+static const GDBusErrorEntry tracker_sparql_error_entries[] =
+{
+       {TRACKER_SPARQL_ERROR_PARSE, "org.freedesktop.Tracker.Error.Parse"},
+       {TRACKER_SPARQL_ERROR_UNKNOWN_CLASS, "org.freedesktop.Tracker.Error.UnknownClass"},
+       {TRACKER_SPARQL_ERROR_UNKNOWN_PROPERTY, "org.freedesktop.Tracker.Error.UnknownProperty"},
+       {TRACKER_SPARQL_ERROR_TYPE, "org.freedesktop.Tracker.Error.Type"},
+       {TRACKER_SPARQL_ERROR_CONSTRAINT, "org.freedesktop.Tracker.Error.Constraint"},
+       {TRACKER_SPARQL_ERROR_NO_SPACE, "org.freedesktop.Tracker.Error.NoSpace"},
+       {TRACKER_SPARQL_ERROR_INTERNAL, "org.freedesktop.Tracker.Error.Internal"},
+       {TRACKER_SPARQL_ERROR_UNSUPPORTED, "org.freedesktop.Tracker.Error.Unsupported"},
+       {TRACKER_SPARQL_ERROR_UNKNOWN_GRAPH, "org.freedesktop.Tracker.Error.UnknownGraph"},
+       {TRACKER_SPARQL_ERROR_ONTOLOGY_NOT_FOUND, "org.freedesktop.Tracker.Error.OntologyNotFound"},
+};
+
 #define TRACKER_SPARQL_ERROR tracker_sparql_error_quark ()
 
 TRACKER_AVAILABLE_IN_ALL


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]