Create a new libvirt-stream.h file to hold the public
API definitions for the virStream type. This header
file is not self-contained, so applications will not directly
include it. They will contain to #include <libvirt/libvirt.h>
Note the definition of virStreamPtr is not moved, since that
must be declared early for all other libvirt APIs to be able
to reference it.
---
docs/apibuild.py | 1 +
include/libvirt/Makefile.am | 1 +
include/libvirt/libvirt-stream.h | 152 +++++++++++++++++++++++++++++++++++++++
include/libvirt/libvirt.h.in | 121 +------------------------------
4 files changed, 155 insertions(+), 120 deletions(-)
create mode 100644 include/libvirt/libvirt-stream.h
diff --git a/docs/apibuild.py b/docs/apibuild.py
index b8fd191..5ddbb58 100755
--- a/docs/apibuild.py
+++ b/docs/apibuild.py
@@ -28,6 +28,7 @@ included_files = {
"libvirt-nodedev.h": "header with general libvirt API
definitions",
"libvirt-nwfilter.h": "header with general libvirt API
definitions",
"libvirt-secret.h": "header with general libvirt API definitions",
+ "libvirt-stream.h": "header with general libvirt API definitions",
"virterror.h": "header with error specific API definitions",
"libvirt.c": "Main interfaces for the libvirt library",
"libvirt-domain.c": "Domain interfaces for the libvirt library",
diff --git a/include/libvirt/Makefile.am b/include/libvirt/Makefile.am
index 62332e1..78d5567 100644
--- a/include/libvirt/Makefile.am
+++ b/include/libvirt/Makefile.am
@@ -25,6 +25,7 @@ virinc_HEADERS = libvirt.h \
libvirt-nodedev.h \
libvirt-nwfilter.h \
libvirt-secret.h \
+ libvirt-stream.h \
libvirt-lxc.h \
libvirt-qemu.h \
virterror.h
diff --git a/include/libvirt/libvirt-stream.h b/include/libvirt/libvirt-stream.h
new file mode 100644
index 0000000..831640d
--- /dev/null
+++ b/include/libvirt/libvirt-stream.h
@@ -0,0 +1,152 @@
+/*
+ * libvirt-stream.h
+ * Summary: APIs for management of streams
+ * Description: Provides APIs for the management of streams
+ * Author: Daniel Veillard <veillard(a)redhat.com>
+ *
+ * Copyright (C) 2006-2014 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <
http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __VIR_LIBVIRT_STREAM_H__
+# define __VIR_LIBVIRT_STREAM_H__
+
+# ifndef __VIR_LIBVIRT_H_INCLUDES__
+# error "Don't include this file directly, only use libvirt/libvirt.h"
+# endif
+
+
+typedef enum {
+ VIR_STREAM_NONBLOCK = (1 << 0),
+} virStreamFlags;
+
+virStreamPtr virStreamNew(virConnectPtr conn,
+ unsigned int flags);
+int virStreamRef(virStreamPtr st);
+
+int virStreamSend(virStreamPtr st,
+ const char *data,
+ size_t nbytes);
+
+int virStreamRecv(virStreamPtr st,
+ char *data,
+ size_t nbytes);
+
+
+/**
+ * virStreamSourceFunc:
+ *
+ * @st: the stream object
+ * @data: preallocated array to be filled with data
+ * @nbytes: size of the data array
+ * @opaque: optional application provided data
+ *
+ * The virStreamSourceFunc callback is used together
+ * with the virStreamSendAll function for libvirt to
+ * obtain the data that is to be sent.
+ *
+ * The callback will be invoked multiple times,
+ * fetching data in small chunks. The application
+ * should fill the 'data' array with up to 'nbytes'
+ * of data and then return the number actual number
+ * of bytes. The callback will continue to be
+ * invoked until it indicates the end of the source
+ * has been reached by returning 0. A return value
+ * of -1 at any time will abort the send operation
+ *
+ * Returns the number of bytes filled, 0 upon end
+ * of file, or -1 upon error
+ */
+typedef int (*virStreamSourceFunc)(virStreamPtr st,
+ char *data,
+ size_t nbytes,
+ void *opaque);
+
+int virStreamSendAll(virStreamPtr st,
+ virStreamSourceFunc handler,
+ void *opaque);
+
+/**
+ * virStreamSinkFunc:
+ *
+ * @st: the stream object
+ * @data: preallocated array to be filled with data
+ * @nbytes: size of the data array
+ * @opaque: optional application provided data
+ *
+ * The virStreamSinkFunc callback is used together
+ * with the virStreamRecvAll function for libvirt to
+ * provide the data that has been received.
+ *
+ * The callback will be invoked multiple times,
+ * providing data in small chunks. The application
+ * should consume up 'nbytes' from the 'data' array
+ * of data and then return the number actual number
+ * of bytes consumed. The callback will continue to be
+ * invoked until it indicates the end of the stream
+ * has been reached. A return value of -1 at any time
+ * will abort the receive operation
+ *
+ * Returns the number of bytes consumed or -1 upon
+ * error
+ */
+typedef int (*virStreamSinkFunc)(virStreamPtr st,
+ const char *data,
+ size_t nbytes,
+ void *opaque);
+
+int virStreamRecvAll(virStreamPtr st,
+ virStreamSinkFunc handler,
+ void *opaque);
+
+typedef enum {
+ VIR_STREAM_EVENT_READABLE = (1 << 0),
+ VIR_STREAM_EVENT_WRITABLE = (1 << 1),
+ VIR_STREAM_EVENT_ERROR = (1 << 2),
+ VIR_STREAM_EVENT_HANGUP = (1 << 3),
+} virStreamEventType;
+
+
+/**
+ * virStreamEventCallback:
+ *
+ * @stream: stream on which the event occurred
+ * @events: bitset of events from virEventHandleType constants
+ * @opaque: user data registered with handle
+ *
+ * Callback for receiving stream events. The callback will
+ * be invoked once for each event which is pending.
+ */
+typedef void (*virStreamEventCallback)(virStreamPtr stream, int events, void *opaque);
+
+int virStreamEventAddCallback(virStreamPtr stream,
+ int events,
+ virStreamEventCallback cb,
+ void *opaque,
+ virFreeCallback ff);
+
+int virStreamEventUpdateCallback(virStreamPtr stream,
+ int events);
+
+int virStreamEventRemoveCallback(virStreamPtr stream);
+
+
+int virStreamFinish(virStreamPtr st);
+int virStreamAbort(virStreamPtr st);
+
+int virStreamFree(virStreamPtr st);
+
+#endif /* __VIR_LIBVIRT_STREAM_H__ */
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index 39824ab..7bfdd88 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -3673,126 +3673,6 @@ int virEventAddTimeout(int frequency,
void virEventUpdateTimeout(int timer, int frequency);
int virEventRemoveTimeout(int timer);
-typedef enum {
- VIR_STREAM_NONBLOCK = (1 << 0),
-} virStreamFlags;
-
-virStreamPtr virStreamNew(virConnectPtr conn,
- unsigned int flags);
-int virStreamRef(virStreamPtr st);
-
-int virStreamSend(virStreamPtr st,
- const char *data,
- size_t nbytes);
-
-int virStreamRecv(virStreamPtr st,
- char *data,
- size_t nbytes);
-
-
-/**
- * virStreamSourceFunc:
- *
- * @st: the stream object
- * @data: preallocated array to be filled with data
- * @nbytes: size of the data array
- * @opaque: optional application provided data
- *
- * The virStreamSourceFunc callback is used together
- * with the virStreamSendAll function for libvirt to
- * obtain the data that is to be sent.
- *
- * The callback will be invoked multiple times,
- * fetching data in small chunks. The application
- * should fill the 'data' array with up to 'nbytes'
- * of data and then return the number actual number
- * of bytes. The callback will continue to be
- * invoked until it indicates the end of the source
- * has been reached by returning 0. A return value
- * of -1 at any time will abort the send operation
- *
- * Returns the number of bytes filled, 0 upon end
- * of file, or -1 upon error
- */
-typedef int (*virStreamSourceFunc)(virStreamPtr st,
- char *data,
- size_t nbytes,
- void *opaque);
-
-int virStreamSendAll(virStreamPtr st,
- virStreamSourceFunc handler,
- void *opaque);
-
-/**
- * virStreamSinkFunc:
- *
- * @st: the stream object
- * @data: preallocated array to be filled with data
- * @nbytes: size of the data array
- * @opaque: optional application provided data
- *
- * The virStreamSinkFunc callback is used together
- * with the virStreamRecvAll function for libvirt to
- * provide the data that has been received.
- *
- * The callback will be invoked multiple times,
- * providing data in small chunks. The application
- * should consume up 'nbytes' from the 'data' array
- * of data and then return the number actual number
- * of bytes consumed. The callback will continue to be
- * invoked until it indicates the end of the stream
- * has been reached. A return value of -1 at any time
- * will abort the receive operation
- *
- * Returns the number of bytes consumed or -1 upon
- * error
- */
-typedef int (*virStreamSinkFunc)(virStreamPtr st,
- const char *data,
- size_t nbytes,
- void *opaque);
-
-int virStreamRecvAll(virStreamPtr st,
- virStreamSinkFunc handler,
- void *opaque);
-
-typedef enum {
- VIR_STREAM_EVENT_READABLE = (1 << 0),
- VIR_STREAM_EVENT_WRITABLE = (1 << 1),
- VIR_STREAM_EVENT_ERROR = (1 << 2),
- VIR_STREAM_EVENT_HANGUP = (1 << 3),
-} virStreamEventType;
-
-
-/**
- * virStreamEventCallback:
- *
- * @stream: stream on which the event occurred
- * @events: bitset of events from virEventHandleType constants
- * @opaque: user data registered with handle
- *
- * Callback for receiving stream events. The callback will
- * be invoked once for each event which is pending.
- */
-typedef void (*virStreamEventCallback)(virStreamPtr stream, int events, void *opaque);
-
-int virStreamEventAddCallback(virStreamPtr stream,
- int events,
- virStreamEventCallback cb,
- void *opaque,
- virFreeCallback ff);
-
-int virStreamEventUpdateCallback(virStreamPtr stream,
- int events);
-
-int virStreamEventRemoveCallback(virStreamPtr stream);
-
-
-int virStreamFinish(virStreamPtr st);
-int virStreamAbort(virStreamPtr st);
-
-int virStreamFree(virStreamPtr st);
-
int virDomainIsActive(virDomainPtr dom);
int virDomainIsPersistent(virDomainPtr dom);
@@ -5026,6 +4906,7 @@ typedef virMemoryParameter *virMemoryParameterPtr;
#include <libvirt/libvirt-nodedev.h>
#include <libvirt/libvirt-nwfilter.h>
#include <libvirt/libvirt-secret.h>
+#include <libvirt/libvirt-stream.h>
#undef __VIR_LIBVIRT_H_INCLUDES__
#ifdef __cplusplus
--
2.1.0