提交 faf769d8 编写于 作者: P Peter Krempa

qemu: monitor: Add API to help creating 'transaction' arguments

Add a new helper that will be solely used to create arguments for the
transaction command. Later on this will make it possible to remove the
overloading which was caused by the fact that snapshots were created
without transaction and also will help in blockdevification of snapshots.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 936ef573
......@@ -466,6 +466,51 @@ qemuMonitorJSONHasError(virJSONValuePtr reply,
}
/**
* qemuMonitorJSONTransactionAdd:
* @actions: array of actions for the 'transaction' command
* @cmdname: command to add to @actions
* @...: arguments for @cmdname (see virJSONValueObjectAddVArgs for formatting)
*
* Add a new command with arguments to the existing ones. The resulting array
* is intended to be used as argument for the 'transaction' command.
*
* Returns 0 on success and -1 on error.
*/
int
qemuMonitorJSONTransactionAdd(virJSONValuePtr actions,
const char *cmdname,
...)
{
virJSONValuePtr entry = NULL;
virJSONValuePtr data = NULL;
va_list args;
int ret = -1;
va_start(args, cmdname);
if (virJSONValueObjectCreateVArgs(&data, args) < 0)
goto cleanup;
if (virJSONValueObjectCreate(&entry,
"s:type", cmdname,
"A:data", &data, NULL) < 0)
goto cleanup;
if (virJSONValueArrayAppend(actions, entry) < 0)
goto cleanup;
entry = NULL;
ret = 0;
cleanup:
virJSONValueFree(entry);
virJSONValueFree(data);
va_end(args);
return ret;
}
/**
* qemuMonitorJSONMakeCommandInternal:
* @cmdname: QMP command name
......
......@@ -32,6 +32,10 @@
# include "cpu/cpu.h"
# include "util/virgic.h"
int qemuMonitorJSONTransactionAdd(virJSONValuePtr actions,
const char *cmdname,
...);
int qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
const char *line,
qemuMonitorMessagePtr msg);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册