diff options
author | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-09-02 15:20:54 +0200 |
---|---|---|
committer | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-09-02 15:24:26 +0200 |
commit | 1cd87320915cab71e89c547ef50a9043bac5768b (patch) | |
tree | ed156b688071643ed6922b87daba5a78a481c11f /libdleyna | |
parent | 731291a5bfd817c06a83a2c7d7eaca084a60cc88 (diff) | |
download | dleyna-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.h | 5 | ||||
-rw-r--r-- | libdleyna/server/props.c | 26 | ||||
-rw-r--r-- | libdleyna/server/props.h | 2 |
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__ */ |