From: "Daniel P. Berrange" <berra...@redhat.com>

Since the event APIs are now in the public header, no internal
code should include virevent.h
---
 src/Makefile.am              |   2 +-
 src/rpc/virnetclientstream.c |   1 -
 src/rpc/virnetserver.c       |   1 -
 src/rpc/virnetservermdns.c   |   1 -
 src/rpc/virnetsocket.c       |   1 -
 src/util/event.c             | 253 -------------------------------------------
 src/util/event.h             |  28 -----
 src/util/virevent.c          | 253 +++++++++++++++++++++++++++++++++++++++++++
 src/util/virevent.h          |  28 +++++
 tests/eventtest.c            |   1 -
 10 files changed, 282 insertions(+), 287 deletions(-)
 delete mode 100644 src/util/event.c
 delete mode 100644 src/util/event.h
 create mode 100644 src/util/virevent.c
 create mode 100644 src/util/virevent.h

diff --git a/src/Makefile.am b/src/Makefile.am
index daefa95..5c0d668 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -53,7 +53,6 @@ augeastest_DATA =
 # These files are not related to driver APIs. Simply generic
 # helper APIs for various purposes
 UTIL_SOURCES =                                                 \
-               util/event.c util/event.h                       \
                util/event_poll.c util/event_poll.h             \
                util/hooks.c util/hooks.h                       \
                util/iptables.c util/iptables.h                 \
@@ -83,6 +82,7 @@ UTIL_SOURCES =                                                
        \
                util/virconf.c util/virconf.h                   \
                util/virdnsmasq.c util/virdnsmasq.h             \
                util/virebtables.c util/virebtables.h           \
+               util/virevent.c util/virevent.h                 \
                util/virfile.c util/virfile.h                   \
                util/virnodesuspend.c util/virnodesuspend.h     \
                util/virobject.c util/virobject.h               \
diff --git a/src/rpc/virnetclientstream.c b/src/rpc/virnetclientstream.c
index 4ed40ca..0e7e38e 100644
--- a/src/rpc/virnetclientstream.c
+++ b/src/rpc/virnetclientstream.c
@@ -27,7 +27,6 @@
 #include "memory.h"
 #include "virterror_internal.h"
 #include "logging.h"
-#include "event.h"
 #include "threads.h"
 
 #define VIR_FROM_THIS VIR_FROM_RPC
diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c
index 6a5a53a..f686a8f 100644
--- a/src/rpc/virnetserver.c
+++ b/src/rpc/virnetserver.c
@@ -35,7 +35,6 @@
 #include "threadpool.h"
 #include "util.h"
 #include "virfile.h"
-#include "event.h"
 #include "virnetservermdns.h"
 #include "virdbus.h"
 
diff --git a/src/rpc/virnetservermdns.c b/src/rpc/virnetservermdns.c
index b55d403..0ddb9d8 100644
--- a/src/rpc/virnetservermdns.c
+++ b/src/rpc/virnetservermdns.c
@@ -41,7 +41,6 @@
 #endif
 
 #include "virnetservermdns.h"
-#include "event.h"
 #include "event_poll.h"
 #include "memory.h"
 #include "virterror_internal.h"
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 70c621f..5a2eab3 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -46,7 +46,6 @@
 #include "virterror_internal.h"
 #include "logging.h"
 #include "virfile.h"
-#include "event.h"
 #include "threads.h"
 #include "virprocess.h"
 
diff --git a/src/util/event.c b/src/util/event.c
deleted file mode 100644
index 0abc30b..0000000
--- a/src/util/event.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * event.c: event loop for monitoring file handles
- *
- * Copyright (C) 2007, 2011 Red Hat, Inc.
- * Copyright (C) 2007 Daniel P. Berrange
- *
- * 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/>.
- *
- * Author: Daniel P. Berrange <berra...@redhat.com>
- */
-
-#include <config.h>
-
-#include "event.h"
-#include "event_poll.h"
-#include "logging.h"
-#include "virterror_internal.h"
-
-#include <stdlib.h>
-
-static virEventAddHandleFunc addHandleImpl = NULL;
-static virEventUpdateHandleFunc updateHandleImpl = NULL;
-static virEventRemoveHandleFunc removeHandleImpl = NULL;
-static virEventAddTimeoutFunc addTimeoutImpl = NULL;
-static virEventUpdateTimeoutFunc updateTimeoutImpl = NULL;
-static virEventRemoveTimeoutFunc removeTimeoutImpl = NULL;
-
-/**
- * virEventAddHandle: register a callback for monitoring file handle events
- *
- * @fd: file handle to monitor for events
- * @events: bitset of events to watch from virEventHandleType constants
- * @cb: callback to invoke when an event occurs
- * @opaque: user data to pass to callback
- *
- * returns -1 if the file handle cannot be registered, 0 upon success
- */
-int virEventAddHandle(int fd,
-                      int events,
-                      virEventHandleCallback cb,
-                      void *opaque,
-                      virFreeCallback ff) {
-    if (!addHandleImpl)
-        return -1;
-
-    return addHandleImpl(fd, events, cb, opaque, ff);
-}
-
-/**
- * virEventUpdateHandle: change event set for a monitored file handle
- *
- * @watch: watch whose file handle to update
- * @events: bitset of events to watch from virEventHandleType constants
- *
- * Will not fail if fd exists
- */
-void virEventUpdateHandle(int watch, int events) {
-    updateHandleImpl(watch, events);
-}
-
-/**
- * virEventRemoveHandle: unregister a callback from a file handle
- *
- * @watch: watch whose file handle to remove
- *
- * returns -1 if the file handle was not registered, 0 upon success
- */
-int virEventRemoveHandle(int watch) {
-    if (!removeHandleImpl)
-        return -1;
-
-    return removeHandleImpl(watch);
-}
-
-/**
- * virEventAddTimeout: register a callback for a timer event
- *
- * @timeout: time between events in milliseconds
- * @cb: callback to invoke when an event occurs
- * @opaque: user data to pass to callback
- *
- * Setting timeout to -1 will disable the timer. Setting the timeout
- * to zero will cause it to fire on every event loop iteration.
- *
- * returns -1 if the timer cannot be registered, a positive
- * integer timer id upon success
- */
-int virEventAddTimeout(int timeout,
-                       virEventTimeoutCallback cb,
-                       void *opaque,
-                       virFreeCallback ff) {
-    if (!addTimeoutImpl)
-        return -1;
-
-    return addTimeoutImpl(timeout, cb, opaque, ff);
-}
-
-/**
- * virEventUpdateTimeoutImpl: change frequency for a timer
- *
- * @timer: timer id to change
- * @frequency: time between events in milliseconds
- *
- * Setting frequency to -1 will disable the timer. Setting the frequency
- * to zero will cause it to fire on every event loop iteration.
- *
- * Will not fail if timer exists
- */
-void virEventUpdateTimeout(int timer, int timeout) {
-    updateTimeoutImpl(timer, timeout);
-}
-
-/**
- * virEventRemoveTimeout: unregister a callback for a timer
- *
- * @timer: the timer id to remove
- *
- * returns -1 if the timer was not registered, 0 upon success
- */
-int virEventRemoveTimeout(int timer) {
-    if (!removeTimeoutImpl)
-        return -1;
-
-    return removeTimeoutImpl(timer);
-}
-
-
-/*****************************************************
- *
- * Below this point are 3  *PUBLIC*  APIs for event
- * loop integration with applications using libvirt.
- * These API contracts cannot be changed.
- *
- *****************************************************/
-
-/**
- * virEventRegisterImpl:
- * @addHandle: the callback to add fd handles
- * @updateHandle: the callback to update fd handles
- * @removeHandle: the callback to remove fd handles
- * @addTimeout: the callback to add a timeout
- * @updateTimeout: the callback to update a timeout
- * @removeTimeout: the callback to remove a timeout
- *
- * Registers an event implementation, to allow integration
- * with an external event loop. Applications would use this
- * to integrate with the libglib2 event loop, or libevent
- * or the QT event loop.
- *
- * If an application does not need to integrate with an
- * existing event loop implementation, then the
- * virEventRegisterDefaultImpl method can be used to setup
- * the generic libvirt implementation.
- */
-void virEventRegisterImpl(virEventAddHandleFunc addHandle,
-                          virEventUpdateHandleFunc updateHandle,
-                          virEventRemoveHandleFunc removeHandle,
-                          virEventAddTimeoutFunc addTimeout,
-                          virEventUpdateTimeoutFunc updateTimeout,
-                          virEventRemoveTimeoutFunc removeTimeout)
-{
-    VIR_DEBUG("addHandle=%p updateHandle=%p removeHandle=%p "
-              "addTimeout=%p updateTimeout=%p removeTimeout=%p",
-              addHandle, updateHandle, removeHandle,
-              addTimeout, updateTimeout, removeTimeout);
-
-    addHandleImpl = addHandle;
-    updateHandleImpl = updateHandle;
-    removeHandleImpl = removeHandle;
-    addTimeoutImpl = addTimeout;
-    updateTimeoutImpl = updateTimeout;
-    removeTimeoutImpl = removeTimeout;
-}
-
-/**
- * virEventRegisterDefaultImpl:
- *
- * Registers a default event implementation based on the
- * poll() system call. This is a generic implementation
- * that can be used by any client application which does
- * not have a need to integrate with an external event
- * loop impl.
- *
- * Once registered, the application has to invoke virEventRunDefaultImpl in
- * a loop to process events.  Failure to do so may result in connections being
- * closed unexpectedly as a result of keepalive timeout.
- *
- * Returns 0 on success, -1 on failure.
- */
-int virEventRegisterDefaultImpl(void)
-{
-    VIR_DEBUG("registering default event implementation");
-
-    virResetLastError();
-
-    if (virEventPollInit() < 0) {
-        virDispatchError(NULL);
-        return -1;
-    }
-
-    virEventRegisterImpl(
-        virEventPollAddHandle,
-        virEventPollUpdateHandle,
-        virEventPollRemoveHandle,
-        virEventPollAddTimeout,
-        virEventPollUpdateTimeout,
-        virEventPollRemoveTimeout
-        );
-
-    return 0;
-}
-
-
-/**
- * virEventRunDefaultImpl:
- *
- * Run one iteration of the event loop. Applications
- * will generally want to have a thread which invokes
- * this method in an infinite loop
- *
- *  static bool quit = false;
- *
- *  while (!quit) {
- *    if (virEventRunDefaultImpl() < 0)
- *       ...print error...
- *  }
- *
- * Returns 0 on success, -1 on failure.
- */
-int virEventRunDefaultImpl(void)
-{
-    VIR_DEBUG("running default event implementation");
-    virResetLastError();
-
-    if (virEventPollRunOnce() < 0) {
-        virDispatchError(NULL);
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/src/util/event.h b/src/util/event.h
deleted file mode 100644
index 5ab567a..0000000
--- a/src/util/event.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * event.h: event loop for monitoring file handles
- *
- * Copyright (C) 2007 Daniel P. Berrange
- * Copyright (C) 2007 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/>.
- *
- * Author: Daniel P. Berrange <berra...@redhat.com>
- */
-
-#ifndef __VIR_EVENT_H__
-# define __VIR_EVENT_H__
-# include "internal.h"
-
-#endif /* __VIR_EVENT_H__ */
diff --git a/src/util/virevent.c b/src/util/virevent.c
new file mode 100644
index 0000000..08b7006
--- /dev/null
+++ b/src/util/virevent.c
@@ -0,0 +1,253 @@
+/*
+ * event.c: event loop for monitoring file handles
+ *
+ * Copyright (C) 2007, 2011 Red Hat, Inc.
+ * Copyright (C) 2007 Daniel P. Berrange
+ *
+ * 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/>.
+ *
+ * Author: Daniel P. Berrange <berra...@redhat.com>
+ */
+
+#include <config.h>
+
+#include "virevent.h"
+#include "event_poll.h"
+#include "logging.h"
+#include "virterror_internal.h"
+
+#include <stdlib.h>
+
+static virEventAddHandleFunc addHandleImpl = NULL;
+static virEventUpdateHandleFunc updateHandleImpl = NULL;
+static virEventRemoveHandleFunc removeHandleImpl = NULL;
+static virEventAddTimeoutFunc addTimeoutImpl = NULL;
+static virEventUpdateTimeoutFunc updateTimeoutImpl = NULL;
+static virEventRemoveTimeoutFunc removeTimeoutImpl = NULL;
+
+/**
+ * virEventAddHandle: register a callback for monitoring file handle events
+ *
+ * @fd: file handle to monitor for events
+ * @events: bitset of events to watch from virEventHandleType constants
+ * @cb: callback to invoke when an event occurs
+ * @opaque: user data to pass to callback
+ *
+ * returns -1 if the file handle cannot be registered, 0 upon success
+ */
+int virEventAddHandle(int fd,
+                      int events,
+                      virEventHandleCallback cb,
+                      void *opaque,
+                      virFreeCallback ff) {
+    if (!addHandleImpl)
+        return -1;
+
+    return addHandleImpl(fd, events, cb, opaque, ff);
+}
+
+/**
+ * virEventUpdateHandle: change event set for a monitored file handle
+ *
+ * @watch: watch whose file handle to update
+ * @events: bitset of events to watch from virEventHandleType constants
+ *
+ * Will not fail if fd exists
+ */
+void virEventUpdateHandle(int watch, int events) {
+    updateHandleImpl(watch, events);
+}
+
+/**
+ * virEventRemoveHandle: unregister a callback from a file handle
+ *
+ * @watch: watch whose file handle to remove
+ *
+ * returns -1 if the file handle was not registered, 0 upon success
+ */
+int virEventRemoveHandle(int watch) {
+    if (!removeHandleImpl)
+        return -1;
+
+    return removeHandleImpl(watch);
+}
+
+/**
+ * virEventAddTimeout: register a callback for a timer event
+ *
+ * @timeout: time between events in milliseconds
+ * @cb: callback to invoke when an event occurs
+ * @opaque: user data to pass to callback
+ *
+ * Setting timeout to -1 will disable the timer. Setting the timeout
+ * to zero will cause it to fire on every event loop iteration.
+ *
+ * returns -1 if the timer cannot be registered, a positive
+ * integer timer id upon success
+ */
+int virEventAddTimeout(int timeout,
+                       virEventTimeoutCallback cb,
+                       void *opaque,
+                       virFreeCallback ff) {
+    if (!addTimeoutImpl)
+        return -1;
+
+    return addTimeoutImpl(timeout, cb, opaque, ff);
+}
+
+/**
+ * virEventUpdateTimeoutImpl: change frequency for a timer
+ *
+ * @timer: timer id to change
+ * @frequency: time between events in milliseconds
+ *
+ * Setting frequency to -1 will disable the timer. Setting the frequency
+ * to zero will cause it to fire on every event loop iteration.
+ *
+ * Will not fail if timer exists
+ */
+void virEventUpdateTimeout(int timer, int timeout) {
+    updateTimeoutImpl(timer, timeout);
+}
+
+/**
+ * virEventRemoveTimeout: unregister a callback for a timer
+ *
+ * @timer: the timer id to remove
+ *
+ * returns -1 if the timer was not registered, 0 upon success
+ */
+int virEventRemoveTimeout(int timer) {
+    if (!removeTimeoutImpl)
+        return -1;
+
+    return removeTimeoutImpl(timer);
+}
+
+
+/*****************************************************
+ *
+ * Below this point are 3  *PUBLIC*  APIs for event
+ * loop integration with applications using libvirt.
+ * These API contracts cannot be changed.
+ *
+ *****************************************************/
+
+/**
+ * virEventRegisterImpl:
+ * @addHandle: the callback to add fd handles
+ * @updateHandle: the callback to update fd handles
+ * @removeHandle: the callback to remove fd handles
+ * @addTimeout: the callback to add a timeout
+ * @updateTimeout: the callback to update a timeout
+ * @removeTimeout: the callback to remove a timeout
+ *
+ * Registers an event implementation, to allow integration
+ * with an external event loop. Applications would use this
+ * to integrate with the libglib2 event loop, or libevent
+ * or the QT event loop.
+ *
+ * If an application does not need to integrate with an
+ * existing event loop implementation, then the
+ * virEventRegisterDefaultImpl method can be used to setup
+ * the generic libvirt implementation.
+ */
+void virEventRegisterImpl(virEventAddHandleFunc addHandle,
+                          virEventUpdateHandleFunc updateHandle,
+                          virEventRemoveHandleFunc removeHandle,
+                          virEventAddTimeoutFunc addTimeout,
+                          virEventUpdateTimeoutFunc updateTimeout,
+                          virEventRemoveTimeoutFunc removeTimeout)
+{
+    VIR_DEBUG("addHandle=%p updateHandle=%p removeHandle=%p "
+              "addTimeout=%p updateTimeout=%p removeTimeout=%p",
+              addHandle, updateHandle, removeHandle,
+              addTimeout, updateTimeout, removeTimeout);
+
+    addHandleImpl = addHandle;
+    updateHandleImpl = updateHandle;
+    removeHandleImpl = removeHandle;
+    addTimeoutImpl = addTimeout;
+    updateTimeoutImpl = updateTimeout;
+    removeTimeoutImpl = removeTimeout;
+}
+
+/**
+ * virEventRegisterDefaultImpl:
+ *
+ * Registers a default event implementation based on the
+ * poll() system call. This is a generic implementation
+ * that can be used by any client application which does
+ * not have a need to integrate with an external event
+ * loop impl.
+ *
+ * Once registered, the application has to invoke virEventRunDefaultImpl in
+ * a loop to process events.  Failure to do so may result in connections being
+ * closed unexpectedly as a result of keepalive timeout.
+ *
+ * Returns 0 on success, -1 on failure.
+ */
+int virEventRegisterDefaultImpl(void)
+{
+    VIR_DEBUG("registering default event implementation");
+
+    virResetLastError();
+
+    if (virEventPollInit() < 0) {
+        virDispatchError(NULL);
+        return -1;
+    }
+
+    virEventRegisterImpl(
+        virEventPollAddHandle,
+        virEventPollUpdateHandle,
+        virEventPollRemoveHandle,
+        virEventPollAddTimeout,
+        virEventPollUpdateTimeout,
+        virEventPollRemoveTimeout
+        );
+
+    return 0;
+}
+
+
+/**
+ * virEventRunDefaultImpl:
+ *
+ * Run one iteration of the event loop. Applications
+ * will generally want to have a thread which invokes
+ * this method in an infinite loop
+ *
+ *  static bool quit = false;
+ *
+ *  while (!quit) {
+ *    if (virEventRunDefaultImpl() < 0)
+ *       ...print error...
+ *  }
+ *
+ * Returns 0 on success, -1 on failure.
+ */
+int virEventRunDefaultImpl(void)
+{
+    VIR_DEBUG("running default event implementation");
+    virResetLastError();
+
+    if (virEventPollRunOnce() < 0) {
+        virDispatchError(NULL);
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/src/util/virevent.h b/src/util/virevent.h
new file mode 100644
index 0000000..5ab567a
--- /dev/null
+++ b/src/util/virevent.h
@@ -0,0 +1,28 @@
+/*
+ * event.h: event loop for monitoring file handles
+ *
+ * Copyright (C) 2007 Daniel P. Berrange
+ * Copyright (C) 2007 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/>.
+ *
+ * Author: Daniel P. Berrange <berra...@redhat.com>
+ */
+
+#ifndef __VIR_EVENT_H__
+# define __VIR_EVENT_H__
+# include "internal.h"
+
+#endif /* __VIR_EVENT_H__ */
diff --git a/tests/eventtest.c b/tests/eventtest.c
index 78f51b7..c087978 100644
--- a/tests/eventtest.c
+++ b/tests/eventtest.c
@@ -31,7 +31,6 @@
 #include "threads.h"
 #include "logging.h"
 #include "util.h"
-#include "event.h"
 #include "event_poll.h"
 
 #define NUM_FDS 31
-- 
1.7.11.7

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to