monitor: Unbox Monitor member mc and rename to qmp

While there, rename its type as well, from MonitorControl to
MonitorQMP.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
Markus Armbruster 2015-03-06 19:35:59 +01:00
parent c83fe23b58
commit 74358f2a16
1 changed files with 15 additions and 18 deletions

View File

@ -161,11 +161,11 @@ struct MonFdset {
QLIST_ENTRY(MonFdset) next; QLIST_ENTRY(MonFdset) next;
}; };
typedef struct MonitorControl { typedef struct {
QObject *id; QObject *id;
JSONMessageParser parser; JSONMessageParser parser;
int command_mode; int command_mode;
} MonitorControl; } MonitorQMP;
/* /*
* To prevent flooding clients, events can be throttled. The * To prevent flooding clients, events can be throttled. The
@ -195,7 +195,7 @@ struct Monitor {
int mux_out; int mux_out;
ReadLineState *rs; ReadLineState *rs;
MonitorControl *mc; MonitorQMP qmp;
CPUState *mon_cpu; CPUState *mon_cpu;
BlockCompletionFunc *password_completion_cb; BlockCompletionFunc *password_completion_cb;
void *password_opaque; void *password_opaque;
@ -228,7 +228,7 @@ static void monitor_command_cb(void *opaque, const char *cmdline,
static inline int qmp_cmd_mode(const Monitor *mon) static inline int qmp_cmd_mode(const Monitor *mon)
{ {
return (mon->mc ? mon->mc->command_mode : 0); return mon->qmp.command_mode;
} }
/* Return true if in control mode, false otherwise */ /* Return true if in control mode, false otherwise */
@ -424,9 +424,9 @@ static void monitor_protocol_emitter(Monitor *mon, QObject *data,
qmp = build_qmp_error_dict(err); qmp = build_qmp_error_dict(err);
} }
if (mon->mc->id) { if (mon->qmp.id) {
qdict_put_obj(qmp, "id", mon->mc->id); qdict_put_obj(qmp, "id", mon->qmp.id);
mon->mc->id = NULL; mon->qmp.id = NULL;
} }
monitor_json_emitter(mon, QOBJECT(qmp)); monitor_json_emitter(mon, QOBJECT(qmp));
@ -568,7 +568,7 @@ static int do_qmp_capabilities(Monitor *mon, const QDict *params,
{ {
/* Will setup QMP capabilities in the future */ /* Will setup QMP capabilities in the future */
if (monitor_ctrl_mode(mon)) { if (monitor_ctrl_mode(mon)) {
mon->mc->command_mode = 1; mon->qmp.command_mode = 1;
} }
return 0; return 0;
@ -4993,8 +4993,8 @@ static void handle_qmp_command(JSONMessageParser *parser, QList *tokens)
goto err_out; goto err_out;
} }
mon->mc->id = qdict_get(input, "id"); mon->qmp.id = qdict_get(input, "id");
qobject_incref(mon->mc->id); qobject_incref(mon->qmp.id);
cmd_name = qdict_get_str(input, "execute"); cmd_name = qdict_get_str(input, "execute");
trace_handle_qmp_command(mon, cmd_name); trace_handle_qmp_command(mon, cmd_name);
@ -5048,7 +5048,7 @@ static void monitor_qmp_read(void *opaque, const uint8_t *buf, int size)
cur_mon = opaque; cur_mon = opaque;
json_message_parser_feed(&cur_mon->mc->parser, (const char *) buf, size); json_message_parser_feed(&cur_mon->qmp.parser, (const char *) buf, size);
cur_mon = old_mon; cur_mon = old_mon;
} }
@ -5114,15 +5114,15 @@ static void monitor_qmp_event(void *opaque, int event)
switch (event) { switch (event) {
case CHR_EVENT_OPENED: case CHR_EVENT_OPENED:
mon->mc->command_mode = 0; mon->qmp.command_mode = 0;
data = get_qmp_greeting(); data = get_qmp_greeting();
monitor_json_emitter(mon, data); monitor_json_emitter(mon, data);
qobject_decref(data); qobject_decref(data);
mon_refcount++; mon_refcount++;
break; break;
case CHR_EVENT_CLOSED: case CHR_EVENT_CLOSED:
json_message_parser_destroy(&mon->mc->parser); json_message_parser_destroy(&mon->qmp.parser);
json_message_parser_init(&mon->mc->parser, handle_qmp_command); json_message_parser_init(&mon->qmp.parser, handle_qmp_command);
mon_refcount--; mon_refcount--;
monitor_fdsets_cleanup(); monitor_fdsets_cleanup();
break; break;
@ -5255,13 +5255,10 @@ void monitor_init(CharDriverState *chr, int flags)
} }
if (monitor_ctrl_mode(mon)) { if (monitor_ctrl_mode(mon)) {
mon->mc = g_malloc0(sizeof(MonitorControl));
/* Control mode requires special handlers */
qemu_chr_add_handlers(chr, monitor_can_read, monitor_qmp_read, qemu_chr_add_handlers(chr, monitor_can_read, monitor_qmp_read,
monitor_qmp_event, mon); monitor_qmp_event, mon);
qemu_chr_fe_set_echo(chr, true); qemu_chr_fe_set_echo(chr, true);
json_message_parser_init(&mon->qmp.parser, handle_qmp_command);
json_message_parser_init(&mon->mc->parser, handle_qmp_command);
} else { } else {
qemu_chr_add_handlers(chr, monitor_can_read, monitor_read, qemu_chr_add_handlers(chr, monitor_can_read, monitor_read,
monitor_event, mon); monitor_event, mon);