mirror of
https://github.com/xemu-project/xemu.git
synced 2025-01-26 22:25:00 +00:00
migration: Export functions to create send channels
Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
62c1e0ca73
commit
3854956ad7
@ -28,6 +28,28 @@
|
||||
#include "trace.h"
|
||||
|
||||
|
||||
struct SocketOutgoingArgs {
|
||||
SocketAddress *saddr;
|
||||
} outgoing_args;
|
||||
|
||||
void socket_send_channel_create(QIOTaskFunc f, void *data)
|
||||
{
|
||||
QIOChannelSocket *sioc = qio_channel_socket_new();
|
||||
qio_channel_socket_connect_async(sioc, outgoing_args.saddr,
|
||||
f, data, NULL, NULL);
|
||||
}
|
||||
|
||||
int socket_send_channel_destroy(QIOChannel *send)
|
||||
{
|
||||
/* Remove channel */
|
||||
object_unref(OBJECT(send));
|
||||
if (outgoing_args.saddr) {
|
||||
qapi_free_SocketAddress(outgoing_args.saddr);
|
||||
outgoing_args.saddr = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static SocketAddress *tcp_build_address(const char *host_port, Error **errp)
|
||||
{
|
||||
SocketAddress *saddr;
|
||||
@ -95,6 +117,11 @@ static void socket_start_outgoing_migration(MigrationState *s,
|
||||
struct SocketConnectData *data = g_new0(struct SocketConnectData, 1);
|
||||
|
||||
data->s = s;
|
||||
|
||||
/* in case previous migration leaked it */
|
||||
qapi_free_SocketAddress(outgoing_args.saddr);
|
||||
outgoing_args.saddr = saddr;
|
||||
|
||||
if (saddr->type == SOCKET_ADDRESS_TYPE_INET) {
|
||||
data->hostname = g_strdup(saddr->u.inet.host);
|
||||
}
|
||||
@ -106,7 +133,6 @@ static void socket_start_outgoing_migration(MigrationState *s,
|
||||
data,
|
||||
socket_connect_data_free,
|
||||
NULL);
|
||||
qapi_free_SocketAddress(saddr);
|
||||
}
|
||||
|
||||
void tcp_start_outgoing_migration(MigrationState *s,
|
||||
|
@ -16,6 +16,13 @@
|
||||
|
||||
#ifndef QEMU_MIGRATION_SOCKET_H
|
||||
#define QEMU_MIGRATION_SOCKET_H
|
||||
|
||||
#include "io/channel.h"
|
||||
#include "io/task.h"
|
||||
|
||||
void socket_send_channel_create(QIOTaskFunc f, void *data);
|
||||
int socket_send_channel_destroy(QIOChannel *send);
|
||||
|
||||
void tcp_start_incoming_migration(const char *host_port, Error **errp);
|
||||
|
||||
void tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
|
||||
|
Loading…
x
Reference in New Issue
Block a user