libvirt/src/qemu_protocol-structs
Eric Blake e7708a1c47 qemu: wire up RPC for qemu monitor events
These are the first async events in the qemu protocol, so this
patch looks rather big compared to most RPC additions.  However,
a large majority of this patch is just mechanical copy-and-paste
from recently-added network events.  It didn't help that this
is also the first virConnect rather than virDomain prefix
associated with a qemu-specific API.

* src/remote/qemu_protocol.x (qemu_*_domain_monitor_event_*): New
structs and RPC messages.
* src/rpc/gendispatch.pl: Adjust naming conventions.
* daemon/libvirtd.h (daemonClientPrivate): Track qemu events.
* daemon/remote.c (remoteClientFreeFunc): Likewise.
(remoteRelayDomainQemuMonitorEvent)
(qemuDispatchConnectDomainMonitorEventRegister)
(qemuDispatchConnectDomainMonitorEventDeregister): New functions.
* src/remote/remote_driver.c (qemuEvents): Handle qemu events.
(doRemoteOpen): Register for events.
(remoteNetworkBuildEventLifecycle)
(remoteConnectDomainQemuMonitorEventRegister)
(remoteConnectDomainQemuMonitorEventDeregister): New functions.
* src/qemu_protocol-structs: Regenerate.

Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-20 11:25:37 -06:00

58 lines
1.9 KiB
C

/* -*- c -*- */
struct remote_nonnull_domain {
remote_nonnull_string name;
remote_uuid uuid;
int id;
};
struct qemu_domain_monitor_command_args {
remote_nonnull_domain dom;
remote_nonnull_string cmd;
u_int flags;
};
struct qemu_domain_monitor_command_ret {
remote_nonnull_string result;
};
struct qemu_domain_attach_args {
u_int pid_value;
u_int flags;
};
struct qemu_domain_attach_ret {
remote_nonnull_domain dom;
};
struct qemu_domain_agent_command_args {
remote_nonnull_domain dom;
remote_nonnull_string cmd;
int timeout;
u_int flags;
};
struct qemu_domain_agent_command_ret {
remote_string result;
};
struct qemu_connect_domain_monitor_event_register_args {
remote_domain dom;
remote_string event;
u_int flags;
};
struct qemu_connect_domain_monitor_event_register_ret {
int callbackID;
};
struct qemu_connect_domain_monitor_event_deregister_args {
int callbackID;
};
struct qemu_domain_monitor_event_msg {
int callbackID;
remote_nonnull_domain dom;
remote_nonnull_string event;
int64_t seconds;
u_int micros;
remote_string details;
};
enum qemu_procedure {
QEMU_PROC_DOMAIN_MONITOR_COMMAND = 1,
QEMU_PROC_DOMAIN_ATTACH = 2,
QEMU_PROC_DOMAIN_AGENT_COMMAND = 3,
QEMU_PROC_CONNECT_DOMAIN_MONITOR_EVENT_REGISTER = 4,
QEMU_PROC_CONNECT_DOMAIN_MONITOR_EVENT_DEREGISTER = 5,
QEMU_PROC_DOMAIN_MONITOR_EVENT = 6,
};