dbus: New helper function: pa_dbus_get_error_message().

This commit is contained in:
Tanu Kaskinen 2011-12-13 21:57:02 +02:00
parent 910bc7c2b4
commit bec34c428c
2 changed files with 22 additions and 0 deletions

View file

@ -452,6 +452,20 @@ void pa_dbus_free_pending_list(pa_dbus_pending **p) {
}
}
const char *pa_dbus_get_error_message(DBusMessage *m) {
const char *message;
pa_assert(m);
pa_assert(dbus_message_get_type(m) == DBUS_MESSAGE_TYPE_ERROR);
if (dbus_message_get_signature(m)[0] != 's')
return "<no explanation>";
pa_assert_se(dbus_message_get_args(m, NULL, DBUS_TYPE_STRING, &message, DBUS_TYPE_INVALID));
return message;
}
void pa_dbus_send_error(DBusConnection *c, DBusMessage *in_reply_to, const char *name, const char *format, ...) {
va_list ap;
char *message;

View file

@ -67,6 +67,14 @@ void pa_dbus_sync_pending_list(pa_dbus_pending **p);
/* Free up a list of pa_dbus_pending_call objects */
void pa_dbus_free_pending_list(pa_dbus_pending **p);
/* When receiving a DBusMessage with type DBUS_MESSAGE_TYPE_ERROR, the
* DBusMessage may or may not contain an error message (a human-readable
* explanation of what went wrong). Extracting the error message from the
* DBusMessage object is a bit tedious, so here's a helper function that does
* that. If the DBusMessage doesn't contain any error message,
* "<no explanation>" is returned. */
const char *pa_dbus_get_error_message(DBusMessage *m);
/* Sends an error message as the reply to the given message. */
void pa_dbus_send_error(
DBusConnection *c,