[libvirt] [PATCH 07/12] Move virStream related APIs out of libvirt.h.in

Daniel P. Berrange berrange at redhat.com
Thu Oct 23 12:58:29 UTC 2014


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 at 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




More information about the libvir-list mailing list