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:
		
							parent
							
								
									c83fe23b58
								
							
						
					
					
						commit
						74358f2a16
					
				
							
								
								
									
										33
									
								
								monitor.c
								
								
								
								
							
							
						
						
									
										33
									
								
								monitor.c
								
								
								
								
							| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue