Re: [Qemu-devel] [PATCH v2 04/20] monitor: Convert client_migrate_info to QAPI
Luiz Capitulino lcapitul...@redhat.com writes: On Tue, 26 May 2015 17:20:39 +0200 Markus Armbruster arm...@redhat.com wrote: Signed-off-by: Markus Armbruster arm...@redhat.com Reviewed-by: Eric Blake ebl...@redhat.com [...] index 8170309..38ff972 100644 --- a/monitor.c +++ b/monitor.c @@ -1032,39 +1032,33 @@ static void hmp_info_trace_events(Monitor *mon, const QDict *qdict) qapi_free_TraceEventInfoList(events); } -static int client_migrate_info(Monitor *mon, const QDict *qdict, - QObject **ret_data) +void qmp_client_migrate_info(const char *protocol, const char *hostname, + bool has_port, int64_t port, + bool has_tls_port, int64_t tls_port, + bool has_cert_subject, const char *cert_subject, + Error **errp) { -const char *protocol = qdict_get_str(qdict, protocol); -const char *hostname = qdict_get_str(qdict, hostname); -const char *subject = qdict_get_try_str(qdict, cert-subject); -int port = qdict_get_try_int(qdict, port, -1); -int tls_port = qdict_get_try_int(qdict, tls-port, -1); -Error *err = NULL; -int ret; - if (strcmp(protocol, spice) == 0) { -if (!qemu_using_spice(err)) { -qerror_report_err(err); -error_free(err); -return -1; +if (!qemu_using_spice(errp)) { +return; } -if (port == -1 tls_port == -1) { -qerror_report(QERR_MISSING_PARAMETER, port/tls-port); -return -1; +if (!has_port !has_tls_port) { +error_set(errp, QERR_MISSING_PARAMETER, port/tls-port); +return; } -ret = qemu_spice_migrate_info(hostname, port, tls_port, subject); -if (ret != 0) { -qerror_report(QERR_UNDEFINED_ERROR); -return -1; +if (qemu_spice_migrate_info(hostname, +has_port ? port : -1, +has_tls_port ? tls_port : -1, +cert_subject)) { +error_set(errp, QERR_UNDEFINED_ERROR); +return; } -return 0; +return; } -qerror_report(QERR_INVALID_PARAMETER_VALUE, protocol, spice); -return -1; +error_set(errp, QERR_INVALID_PARAMETER_VALUE, protocol, spice); } Why not use error_setg() instead of error_set()? Just to keep this patch more obvious. I agree the QERR_ macros need to go, but that'll take a separate series, and only after I managed to empty out the rest of qerror.h. [...]
Re: [Qemu-devel] [PATCH v2 04/20] monitor: Convert client_migrate_info to QAPI
On Tue, 26 May 2015 17:20:39 +0200 Markus Armbruster arm...@redhat.com wrote: Signed-off-by: Markus Armbruster arm...@redhat.com Reviewed-by: Eric Blake ebl...@redhat.com --- hmp-commands.hx | 3 +-- hmp.c| 17 + hmp.h| 1 + monitor.c| 42 ++ qapi-schema.json | 19 +++ qmp-commands.hx | 2 +- 6 files changed, 57 insertions(+), 27 deletions(-) diff --git a/hmp-commands.hx b/hmp-commands.hx index 0cf592b..af2de61 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1012,8 +1012,7 @@ ETEXI .args_type = protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?, .params = protocol hostname port tls-port cert-subject, .help = set migration information for remote display, -.user_print = monitor_user_noop, -.mhandler.cmd_new = client_migrate_info, +.mhandler.cmd = hmp_client_migrate_info, }, STEXI diff --git a/hmp.c b/hmp.c index e17852d..5a43f9d 100644 --- a/hmp.c +++ b/hmp.c @@ -1250,6 +1250,23 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict) } } +void hmp_client_migrate_info(Monitor *mon, const QDict *qdict) +{ +Error *err = NULL; +const char *protocol = qdict_get_str(qdict, protocol); +const char *hostname = qdict_get_str(qdict, hostname); +bool has_port= qdict_haskey(qdict, port); +int port = qdict_get_try_int(qdict, port, -1); +bool has_tls_port= qdict_haskey(qdict, tls-port); +int tls_port = qdict_get_try_int(qdict, tls-port, -1); +const char *cert_subject = qdict_get_try_str(qdict, cert-subject); + +qmp_client_migrate_info(protocol, hostname, +has_port, port, has_tls_port, tls_port, +!!cert_subject, cert_subject, err); +hmp_handle_error(mon, err); +} + void hmp_set_password(Monitor *mon, const QDict *qdict) { const char *protocol = qdict_get_str(qdict, protocol); diff --git a/hmp.h b/hmp.h index a158e3f..b81439c 100644 --- a/hmp.h +++ b/hmp.h @@ -67,6 +67,7 @@ void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict); void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict); void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict); void hmp_migrate_set_cache_size(Monitor *mon, const QDict *qdict); +void hmp_client_migrate_info(Monitor *mon, const QDict *qdict); void hmp_set_password(Monitor *mon, const QDict *qdict); void hmp_expire_password(Monitor *mon, const QDict *qdict); void hmp_eject(Monitor *mon, const QDict *qdict); diff --git a/monitor.c b/monitor.c index 8170309..38ff972 100644 --- a/monitor.c +++ b/monitor.c @@ -1032,39 +1032,33 @@ static void hmp_info_trace_events(Monitor *mon, const QDict *qdict) qapi_free_TraceEventInfoList(events); } -static int client_migrate_info(Monitor *mon, const QDict *qdict, - QObject **ret_data) +void qmp_client_migrate_info(const char *protocol, const char *hostname, + bool has_port, int64_t port, + bool has_tls_port, int64_t tls_port, + bool has_cert_subject, const char *cert_subject, + Error **errp) { -const char *protocol = qdict_get_str(qdict, protocol); -const char *hostname = qdict_get_str(qdict, hostname); -const char *subject = qdict_get_try_str(qdict, cert-subject); -int port = qdict_get_try_int(qdict, port, -1); -int tls_port = qdict_get_try_int(qdict, tls-port, -1); -Error *err = NULL; -int ret; - if (strcmp(protocol, spice) == 0) { -if (!qemu_using_spice(err)) { -qerror_report_err(err); -error_free(err); -return -1; +if (!qemu_using_spice(errp)) { +return; } -if (port == -1 tls_port == -1) { -qerror_report(QERR_MISSING_PARAMETER, port/tls-port); -return -1; +if (!has_port !has_tls_port) { +error_set(errp, QERR_MISSING_PARAMETER, port/tls-port); +return; } -ret = qemu_spice_migrate_info(hostname, port, tls_port, subject); -if (ret != 0) { -qerror_report(QERR_UNDEFINED_ERROR); -return -1; +if (qemu_spice_migrate_info(hostname, +has_port ? port : -1, +has_tls_port ? tls_port : -1, +cert_subject)) { +error_set(errp, QERR_UNDEFINED_ERROR); +return; } -return 0; +return; } -qerror_report(QERR_INVALID_PARAMETER_VALUE, protocol, spice); -return -1; +error_set(errp, QERR_INVALID_PARAMETER_VALUE,
[Qemu-devel] [PATCH v2 04/20] monitor: Convert client_migrate_info to QAPI
Signed-off-by: Markus Armbruster arm...@redhat.com Reviewed-by: Eric Blake ebl...@redhat.com --- hmp-commands.hx | 3 +-- hmp.c| 17 + hmp.h| 1 + monitor.c| 42 ++ qapi-schema.json | 19 +++ qmp-commands.hx | 2 +- 6 files changed, 57 insertions(+), 27 deletions(-) diff --git a/hmp-commands.hx b/hmp-commands.hx index 0cf592b..af2de61 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1012,8 +1012,7 @@ ETEXI .args_type = protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?, .params = protocol hostname port tls-port cert-subject, .help = set migration information for remote display, -.user_print = monitor_user_noop, -.mhandler.cmd_new = client_migrate_info, +.mhandler.cmd = hmp_client_migrate_info, }, STEXI diff --git a/hmp.c b/hmp.c index e17852d..5a43f9d 100644 --- a/hmp.c +++ b/hmp.c @@ -1250,6 +1250,23 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict) } } +void hmp_client_migrate_info(Monitor *mon, const QDict *qdict) +{ +Error *err = NULL; +const char *protocol = qdict_get_str(qdict, protocol); +const char *hostname = qdict_get_str(qdict, hostname); +bool has_port= qdict_haskey(qdict, port); +int port = qdict_get_try_int(qdict, port, -1); +bool has_tls_port= qdict_haskey(qdict, tls-port); +int tls_port = qdict_get_try_int(qdict, tls-port, -1); +const char *cert_subject = qdict_get_try_str(qdict, cert-subject); + +qmp_client_migrate_info(protocol, hostname, +has_port, port, has_tls_port, tls_port, +!!cert_subject, cert_subject, err); +hmp_handle_error(mon, err); +} + void hmp_set_password(Monitor *mon, const QDict *qdict) { const char *protocol = qdict_get_str(qdict, protocol); diff --git a/hmp.h b/hmp.h index a158e3f..b81439c 100644 --- a/hmp.h +++ b/hmp.h @@ -67,6 +67,7 @@ void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict); void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict); void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict); void hmp_migrate_set_cache_size(Monitor *mon, const QDict *qdict); +void hmp_client_migrate_info(Monitor *mon, const QDict *qdict); void hmp_set_password(Monitor *mon, const QDict *qdict); void hmp_expire_password(Monitor *mon, const QDict *qdict); void hmp_eject(Monitor *mon, const QDict *qdict); diff --git a/monitor.c b/monitor.c index 8170309..38ff972 100644 --- a/monitor.c +++ b/monitor.c @@ -1032,39 +1032,33 @@ static void hmp_info_trace_events(Monitor *mon, const QDict *qdict) qapi_free_TraceEventInfoList(events); } -static int client_migrate_info(Monitor *mon, const QDict *qdict, - QObject **ret_data) +void qmp_client_migrate_info(const char *protocol, const char *hostname, + bool has_port, int64_t port, + bool has_tls_port, int64_t tls_port, + bool has_cert_subject, const char *cert_subject, + Error **errp) { -const char *protocol = qdict_get_str(qdict, protocol); -const char *hostname = qdict_get_str(qdict, hostname); -const char *subject = qdict_get_try_str(qdict, cert-subject); -int port = qdict_get_try_int(qdict, port, -1); -int tls_port = qdict_get_try_int(qdict, tls-port, -1); -Error *err = NULL; -int ret; - if (strcmp(protocol, spice) == 0) { -if (!qemu_using_spice(err)) { -qerror_report_err(err); -error_free(err); -return -1; +if (!qemu_using_spice(errp)) { +return; } -if (port == -1 tls_port == -1) { -qerror_report(QERR_MISSING_PARAMETER, port/tls-port); -return -1; +if (!has_port !has_tls_port) { +error_set(errp, QERR_MISSING_PARAMETER, port/tls-port); +return; } -ret = qemu_spice_migrate_info(hostname, port, tls_port, subject); -if (ret != 0) { -qerror_report(QERR_UNDEFINED_ERROR); -return -1; +if (qemu_spice_migrate_info(hostname, +has_port ? port : -1, +has_tls_port ? tls_port : -1, +cert_subject)) { +error_set(errp, QERR_UNDEFINED_ERROR); +return; } -return 0; +return; } -qerror_report(QERR_INVALID_PARAMETER_VALUE, protocol, spice); -return -1; +error_set(errp, QERR_INVALID_PARAMETER_VALUE, protocol, spice); } static void hmp_logfile(Monitor *mon, const QDict *qdict) diff --git a/qapi-schema.json b/qapi-schema.json index f97ffa1..d052f10 100644 --- a/qapi-schema.json +++ b/qapi-schema.json