Socket's implementation of ref_state_set to return empty sets instead of NULL
[platform/core/uifw/at-spi2-atk.git] / droute / droute.c
index b58402c..9212e4d 100644 (file)
@@ -326,7 +326,11 @@ impl_prop_GetSet (DBusMessage *message,
 
     prop_funcs = (PropertyPair *) g_hash_table_lookup (path->properties, &pair);
     if (!prop_funcs)
+#ifdef DBUS_ERROR_UNKNOWN_PROPERTY
+        return dbus_message_new_error (message, DBUS_ERROR_UNKNOWN_PROPERTY, "Property unavailable");
+#else
         return dbus_message_new_error (message, DBUS_ERROR_FAILED, "Property unavailable");
+#endif
 
     datum = path_get_datum (path, pathstr);
     if (!datum)
@@ -361,6 +365,12 @@ impl_prop_GetSet (DBusMessage *message,
 
         reply = dbus_message_new_method_return (message);
       }
+#ifdef DBUS_ERROR_PROPERTY_READ_ONLY
+    else if (!get)
+      {
+        reply = dbus_message_new_error (message, DBUS_ERROR_PROPERTY_READ_ONLY, "Property is read-only");
+      }
+#endif
     else
       {
         reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, "Getter or setter unavailable");
@@ -596,9 +606,15 @@ droute_object_does_not_exist_error (DBusMessage *message)
             dbus_message_get_signature (message),
             dbus_message_get_interface (message),
             dbus_message_get_path (message));
+#ifdef DBUS_ERROR_UNKNOWN_OBJECT
+    reply = dbus_message_new_error (message,
+                                    DBUS_ERROR_UNKNOWN_OBJECT,
+                                    errmsg);
+#else
     reply = dbus_message_new_error (message,
                                     DBUS_ERROR_FAILED,
                                     errmsg);
+#endif
     g_free (errmsg);
     return reply;
 }
@@ -670,6 +686,12 @@ droute_path_register (DRoutePath *path, DBusConnection *bus)
 }
 
 void
+droute_path_unregister (DRoutePath *path, DBusConnection *bus)
+{
+  dbus_connection_unregister_object_path (bus, path->path);
+}
+
+void
 droute_context_register (DRouteContext *cnx, DBusConnection *bus)
 {
     g_ptr_array_foreach (cnx->registered_paths, (GFunc) droute_path_register,
@@ -677,9 +699,30 @@ droute_context_register (DRouteContext *cnx, DBusConnection *bus)
 }
 
 void
+droute_context_unregister (DRouteContext *cnx, DBusConnection *bus)
+{
+    g_ptr_array_foreach (cnx->registered_paths, (GFunc) droute_path_unregister,
+                         bus);
+}
+
+void
+droute_context_deregister (DRouteContext *cnx, DBusConnection *bus)
+{
+    g_ptr_array_foreach (cnx->registered_paths, (GFunc) droute_path_unregister,
+                         bus);
+}
+
+void
 droute_intercept_dbus (DBusConnection *bus)
 {
     dbus_connection_register_object_path (bus, DBUS_PATH_DBUS,
                                           &droute_vtable, NULL);
 }
+
+void
+droute_unintercept_dbus (DBusConnection *bus)
+{
+    dbus_connection_unregister_object_path (bus, DBUS_PATH_DBUS);
+}
+
 /*END------------------------------------------------------------------------*/