summaryrefslogtreecommitdiff
path: root/libdleyna
diff options
context:
space:
mode:
authorLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-09-02 15:20:54 +0200
committerLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-09-02 15:24:26 +0200
commit1cd87320915cab71e89c547ef50a9043bac5768b (patch)
treeed156b688071643ed6922b87daba5a78a481c11f /libdleyna
parent731291a5bfd817c06a83a2c7d7eaca084a60cc88 (diff)
downloaddleyna-server-1cd87320915cab71e89c547ef50a9043bac5768b.tar.gz
[Property] Support for new "Error" property
Add a new 'Error' property, used by BrowseObjects for instance. Error is a dictionary with 2 entries: ID: u -> Numeric error code Message: s -> Error message Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
Diffstat (limited to 'libdleyna')
-rw-r--r--libdleyna/server/interface.h5
-rw-r--r--libdleyna/server/props.c26
-rw-r--r--libdleyna/server/props.h2
3 files changed, 33 insertions, 0 deletions
diff --git a/libdleyna/server/interface.h b/libdleyna/server/interface.h
index d06eefc..56b7aa0 100644
--- a/libdleyna/server/interface.h
+++ b/libdleyna/server/interface.h
@@ -43,6 +43,11 @@ enum dls_interface_type_ {
#define DLS_INTERFACE_MEDIA_OBJECT "org.gnome.UPnP.MediaObject2"
#define DLS_INTERFACE_MEDIA_ITEM "org.gnome.UPnP.MediaItem2"
+#define DLS_INTERFACE_PROP_ERROR "Error"
+#define DLS_INTERFACE_PROP_ERROR_ID "ID"
+#define DLS_INTERFACE_PROP_ERROR_NAME "Name"
+#define DLS_INTERFACE_PROP_ERROR_MESSAGE "Message"
+
/* Manager Properties */
#define DLS_INTERFACE_PROP_WHITE_LIST_ENTRIES "WhiteListEntries"
#define DLS_INTERFACE_PROP_WHITE_LIST_ENABLED "WhiteListEnabled"
diff --git a/libdleyna/server/props.c b/libdleyna/server/props.c
index c822d1d..4091f84 100644
--- a/libdleyna/server/props.c
+++ b/libdleyna/server/props.c
@@ -2123,3 +2123,29 @@ GVariant *dls_props_get_manager_prop(GUPnPContextManager *manager,
return retval;
}
+
+GVariant *dls_props_get_error_prop(GError *error)
+{
+ GVariantBuilder gvb;
+
+ g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}"));
+
+ g_variant_builder_add(&gvb, "{sv}",
+ DLS_INTERFACE_PROP_ERROR_ID,
+ g_variant_new_int32(error->code));
+
+/* NOTE: We should modify the dleyna-connector API to add a new method to
+ * retrieve the error string. Direct call to DBUS are forbidden.
+ *
+ * g_variant_builder_add(&gvb, "{sv}",
+ * DLS_INTERFACE_PROP_ERROR_NAME,
+ * g_variant_new_string(
+ * g_dbus_error_get_remote_error(cb_data->error)));
+*/
+
+ g_variant_builder_add(&gvb, "{sv}",
+ DLS_INTERFACE_PROP_ERROR_MESSAGE,
+ g_variant_new_string(error->message));
+
+ return g_variant_builder_end(&gvb);
+}
diff --git a/libdleyna/server/props.h b/libdleyna/server/props.h
index 07596b4..1cb5e93 100644
--- a/libdleyna/server/props.h
+++ b/libdleyna/server/props.h
@@ -147,4 +147,6 @@ void dls_props_add_manager(GUPnPContextManager *manager, GVariantBuilder *vb);
GVariant *dls_props_get_manager_prop(GUPnPContextManager *manager,
const gchar *prop);
+GVariant *dls_props_get_error_prop(GError *error);
+
#endif /* DLS_PROPS_H__ */