125b310e1d
This is mostly in preparation for the win32 port, which won't use GIO channels for reasons that will be made clearer later. Here the GAChannel class is just a loose wrapper around GIOChannel calls/callbacks, but we also roll in the logic/configuration for various channel types and managing unix socket connections, which makes the abstraction much more complete and further aids in the win32 port since isa-serial/unix-listen will not be supported initially. There's also a bit of refactoring in the main logic to consolidate the exit paths so we can do common cleanup for things like pid files, which weren't always cleaned up previously.
34 lines
912 B
C
34 lines
912 B
C
/*
|
|
* QEMU Guest Agent channel declarations
|
|
*
|
|
* Copyright IBM Corp. 2012
|
|
*
|
|
* Authors:
|
|
* Michael Roth <mdroth@linux.vnet.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
#ifndef QGA_CHANNEL_H
|
|
#define QGA_CHANNEL_H
|
|
|
|
#include <glib.h>
|
|
|
|
typedef struct GAChannel GAChannel;
|
|
|
|
typedef enum {
|
|
GA_CHANNEL_VIRTIO_SERIAL,
|
|
GA_CHANNEL_ISA_SERIAL,
|
|
GA_CHANNEL_UNIX_LISTEN,
|
|
} GAChannelMethod;
|
|
|
|
typedef gboolean (*GAChannelCallback)(GIOCondition condition, gpointer opaque);
|
|
|
|
GAChannel *ga_channel_new(GAChannelMethod method, const gchar *path,
|
|
GAChannelCallback cb, gpointer opaque);
|
|
void ga_channel_free(GAChannel *c);
|
|
GIOStatus ga_channel_read(GAChannel *c, gchar *buf, gsize size, gsize *count);
|
|
GIOStatus ga_channel_write_all(GAChannel *c, const gchar *buf, gsize size);
|
|
|
|
#endif
|