Monitor: Introduce cmd_new_ret()
In order to implement the new error handling and debugging mechanism for command handlers, we need to change the cmd_new() callback to return a value. This commit introduces cmd_new_ret(), which returns a value and will be used only temporarily to handle the transition from cmd_new(). That is, as soon as all command handlers are ported to cmd_new_ret(), it will be renamed back to cmd_new() and the new error handling and debugging mechanism will be added on top of it. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
98b5008081
commit
97536cffbf
@ -98,6 +98,7 @@ typedef struct mon_cmd_t {
|
|||||||
const char *params;
|
const char *params;
|
||||||
const char *help;
|
const char *help;
|
||||||
void (*user_print)(Monitor *mon, const QObject *data);
|
void (*user_print)(Monitor *mon, const QObject *data);
|
||||||
|
int (*cmd_new_ret)(Monitor *mon, const QDict *params, QObject **ret_data);
|
||||||
union {
|
union {
|
||||||
void (*info)(Monitor *mon);
|
void (*info)(Monitor *mon);
|
||||||
void (*info_new)(Monitor *mon, QObject **ret_data);
|
void (*info_new)(Monitor *mon, QObject **ret_data);
|
||||||
@ -3801,7 +3802,11 @@ static void monitor_call_handler(Monitor *mon, const mon_cmd_t *cmd,
|
|||||||
{
|
{
|
||||||
QObject *data = NULL;
|
QObject *data = NULL;
|
||||||
|
|
||||||
cmd->mhandler.cmd_new(mon, params, &data);
|
if (cmd->cmd_new_ret) {
|
||||||
|
cmd->cmd_new_ret(mon, params, &data);
|
||||||
|
} else {
|
||||||
|
cmd->mhandler.cmd_new(mon, params, &data);
|
||||||
|
}
|
||||||
|
|
||||||
if (is_async_return(data)) {
|
if (is_async_return(data)) {
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user