Add DBus helper methods for creating reply messages

The test suites often have to create DBus method reply messages
with payloads. Create two helpers for simplifying the process
of creating replies with payloads.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2014-03-19 10:58:42 +00:00
parent 838d0b04ca
commit bd93dea3f7
3 changed files with 67 additions and 0 deletions

View File

@ -1165,6 +1165,8 @@ virDBusCallMethod;
virDBusCloseSystemBus;
virDBusCreateMethod;
virDBusCreateMethodV;
virDBusCreateReply;
virDBusCreateReplyV;
virDBusGetSessionBus;
virDBusGetSystemBus;
virDBusHasSystemBus;

View File

@ -1228,6 +1228,66 @@ int virDBusCreateMethod(DBusMessage **call,
}
/**
* virDBusCreateReplyV:
* @reply: pointer to be filled with a method reply message
* @types: type signature for following method arguments
* @args: method arguments
*
* This creates a DBus method reply message and saves a
* pointer to it in @reply.
*
* The @types parameter is a DBus signature describing
* the method call parameters which will be provided
* as variadic args. See virDBusCreateMethodV for a
* description of this parameter.
*/
int virDBusCreateReplyV(DBusMessage **reply,
const char *types,
va_list args)
{
int ret = -1;
if (!(*reply = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN))) {
virReportOOMError();
goto cleanup;
}
if (virDBusMessageEncodeArgs(*reply, types, args) < 0) {
dbus_message_unref(*reply);
*reply = NULL;
goto cleanup;
}
ret = 0;
cleanup:
return ret;
}
/**
* virDBusCreateReply:
* @reply: pointer to be filled with a method reply message
* @types: type signature for following method arguments
* @...: method arguments
*
* See virDBusCreateReplyV for a description of the
* behaviour of this method.
*/
int virDBusCreateReply(DBusMessage **reply,
const char *types, ...)
{
va_list args;
int ret;
va_start(args, types);
ret = virDBusCreateReplyV(reply, types, args);
va_end(args);
return ret;
}
/**
* virDBusCall:
* @conn: a DBus connection

View File

@ -53,6 +53,11 @@ int virDBusCreateMethodV(DBusMessage **call,
const char *member,
const char *types,
va_list args);
int virDBusCreateReply(DBusMessage **reply,
const char *types, ...);
int virDBusCreateReplyV(DBusMessage **reply,
const char *types,
va_list args);
int virDBusCallMethod(DBusConnection *conn,
DBusMessage **reply,