[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V5 24/28] qapi event: convert SPICE events
From: |
Wenchao Xia |
Subject: |
[Qemu-devel] [PATCH V5 24/28] qapi event: convert SPICE events |
Date: |
Wed, 30 Apr 2014 21:26:58 -0700 |
SPICE_INITIALIZED, SPICE_CONNECTED, SPICE_DISCONNECTED and
SPICE_MIGRATE_COMPLETED are converted. inet_strfamily is removed
since no more caller exist now.
Signed-off-by: Wenchao Xia <address@hidden>
---
include/qemu/sockets.h | 1 -
ui/spice-core.c | 70 ++++++++++++++++++++++++-----------------------
util/qemu-sockets.c | 10 -------
3 files changed, 36 insertions(+), 45 deletions(-)
diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h
index af24669..fdbb196 100644
--- a/include/qemu/sockets.h
+++ b/include/qemu/sockets.h
@@ -61,7 +61,6 @@ int inet_nonblocking_connect(const char *str,
void *opaque, Error **errp);
int inet_dgram_opts(QemuOpts *opts, Error **errp);
-const char *inet_strfamily(int family);
NetworkAddressFamily inet_netfamily(int family);
int unix_listen_opts(QemuOpts *opts, Error **errp);
diff --git a/ui/spice-core.c b/ui/spice-core.c
index 387f0ab..f69cdc1 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -35,9 +35,9 @@
#include "qapi/qmp/qjson.h"
#include "qemu/notify.h"
#include "migration/migration.h"
-#include "monitor/monitor.h"
#include "hw/hw.h"
#include "ui/spice-display.h"
+#include "qapi-event.h"
/* core bits */
@@ -173,39 +173,34 @@ static void channel_list_del(SpiceChannelEventInfo *info)
}
}
-static void add_addr_info(QDict *dict, struct sockaddr *addr, int len)
+static void add_addr_info(SpiceBasicInfo *info, struct sockaddr *addr, int len)
{
char host[NI_MAXHOST], port[NI_MAXSERV];
- const char *family;
getnameinfo(addr, len, host, sizeof(host), port, sizeof(port),
NI_NUMERICHOST | NI_NUMERICSERV);
- family = inet_strfamily(addr->sa_family);
- qdict_put(dict, "host", qstring_from_str(host));
- qdict_put(dict, "port", qstring_from_str(port));
- qdict_put(dict, "family", qstring_from_str(family));
+ info->host = g_strdup(host);
+ info->port = g_strdup(port);
+ info->family = inet_netfamily(addr->sa_family);
}
-static void add_channel_info(QDict *dict, SpiceChannelEventInfo *info)
+static void add_channel_info(SpiceChannel *sc, SpiceChannelEventInfo *info)
{
int tls = info->flags & SPICE_CHANNEL_EVENT_FLAG_TLS;
- qdict_put(dict, "connection-id", qint_from_int(info->connection_id));
- qdict_put(dict, "channel-type", qint_from_int(info->type));
- qdict_put(dict, "channel-id", qint_from_int(info->id));
- qdict_put(dict, "tls", qbool_from_int(tls));
+ sc->connection_id = info->connection_id;
+ sc->channel_type = info->type;
+ sc->channel_id = info->id;
+ sc->tls = !!tls;
}
static void channel_event(int event, SpiceChannelEventInfo *info)
{
- static const int qevent[] = {
- [ SPICE_CHANNEL_EVENT_CONNECTED ] = QEVENT_SPICE_CONNECTED,
- [ SPICE_CHANNEL_EVENT_INITIALIZED ] = QEVENT_SPICE_INITIALIZED,
- [ SPICE_CHANNEL_EVENT_DISCONNECTED ] = QEVENT_SPICE_DISCONNECTED,
- };
- QDict *server, *client;
- QObject *data;
+ SpiceServerInfo *server = g_malloc0(sizeof(*server));
+ SpiceChannel *client = g_malloc0(sizeof(*client));
+ server->base = g_malloc0(sizeof(*server->base));
+ client->base = g_malloc0(sizeof(*client->base));
/*
* Spice server might have called us from spice worker thread
@@ -221,36 +216,43 @@ static void channel_event(int event,
SpiceChannelEventInfo *info)
qemu_mutex_lock_iothread();
}
- client = qdict_new();
- server = qdict_new();
-
if (info->flags & SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT) {
- add_addr_info(client, (struct sockaddr *)&info->paddr_ext,
+ add_addr_info(client->base, (struct sockaddr *)&info->paddr_ext,
info->plen_ext);
- add_addr_info(server, (struct sockaddr *)&info->laddr_ext,
+ add_addr_info(server->base, (struct sockaddr *)&info->laddr_ext,
info->llen_ext);
} else {
error_report("spice: %s, extended address is expected",
__func__);
}
- if (event == SPICE_CHANNEL_EVENT_INITIALIZED) {
- qdict_put(server, "auth", qstring_from_str(auth));
+ switch (event) {
+ case SPICE_CHANNEL_EVENT_CONNECTED:
+ qapi_event_send_spice_connected(server->base, client->base, NULL);
+ break;
+ case SPICE_CHANNEL_EVENT_INITIALIZED:
+ if (auth) {
+ server->has_auth = true;
+ server->auth = g_strdup(auth);
+ }
add_channel_info(client, info);
channel_list_add(info);
- }
- if (event == SPICE_CHANNEL_EVENT_DISCONNECTED) {
+ qapi_event_send_spice_initialized(server, client, NULL);
+ break;
+ case SPICE_CHANNEL_EVENT_DISCONNECTED:
channel_list_del(info);
+ qapi_event_send_spice_disconnected(server->base, client->base, NULL);
+ break;
+ default:
+ break;
}
- data = qobject_from_jsonf("{ 'client': %p, 'server': %p }",
- QOBJECT(client), QOBJECT(server));
- monitor_protocol_event(qevent[event], data);
- qobject_decref(data);
-
if (need_lock) {
qemu_mutex_unlock_iothread();
}
+
+ qapi_free_SpiceServerInfo(server);
+ qapi_free_SpiceChannel(client);
}
static SpiceCoreInterface core_interface = {
@@ -304,7 +306,7 @@ static void
migrate_connect_complete_cb(SpiceMigrateInstance *sin)
static void migrate_end_complete_cb(SpiceMigrateInstance *sin)
{
- monitor_protocol_event(QEVENT_SPICE_MIGRATE_COMPLETED, NULL);
+ qapi_event_send_spice_migrate_completed(NULL);
spice_migration_completed = true;
}
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 777aca2..9999c38 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -94,16 +94,6 @@ static void inet_setport(struct addrinfo *e, int port)
}
}
-const char *inet_strfamily(int family)
-{
- switch (family) {
- case PF_INET6: return "ipv6";
- case PF_INET: return "ipv4";
- case PF_UNIX: return "unix";
- }
- return "unknown";
-}
-
NetworkAddressFamily inet_netfamily(int family)
{
switch (family) {
--
1.7.1
- [Qemu-devel] [PATCH V5 14/28] qapi event: convert WAKEUP, (continued)
- [Qemu-devel] [PATCH V5 14/28] qapi event: convert WAKEUP, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 15/28] qapi event: convert RTC_CHANGE, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 16/28] qapi event: convert WATCHDOG, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 17/28] qapi event: convert DEVICE_DELETED, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 18/28] qapi event: convert DEVICE_TRAY_MOVED, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 19/28] qapi event: convert BLOCK_IO_ERROR and BLOCK_JOB_ERROR, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 20/28] qapi event: convert BLOCK_IMAGE_CORRUPTED, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 21/28] qapi event: convert other BLOCK_JOB events, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 22/28] qapi event: convert NIC_RX_FILTER_CHANGED, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 23/28] qapi event: convert VNC events, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 24/28] qapi event: convert SPICE events,
Wenchao Xia <=
- [Qemu-devel] [PATCH V5 25/28] qapi event: convert BALLOON_CHANGE, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 26/28] qapi event: convert GUEST_PANICKED, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 27/28] qapi event: convert QUORUM events, Wenchao Xia, 2014/05/01
- [Qemu-devel] [PATCH V5 28/28] qapi event: clean up, Wenchao Xia, 2014/05/01