From 2e07a1e14635ad25c57b66c13488feff4c8d2b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 23 May 2019 11:51:48 +0100 Subject: [PATCH] event: add API for requiring an event loop impl to be registered MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Cole Robinson Signed-off-by: Daniel P. Berrangé --- po/POTFILES.in | 1 + src/util/virevent.c | 24 ++++++++++++++++++++++++ src/util/virevent.h | 2 ++ 3 files changed, 27 insertions(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index 7a791121e3..c26ac9497d 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -240,6 +240,7 @@ @SRCDIR@/src/util/virdnsmasq.c @SRCDIR@/src/util/virerror.c @SRCDIR@/src/util/virerror.h +@SRCDIR@/src/util/virevent.c @SRCDIR@/src/util/vireventpoll.c @SRCDIR@/src/util/virfcp.c @SRCDIR@/src/util/virfdstream.c diff --git a/src/util/virevent.c b/src/util/virevent.c index 3cac9f9472..f6c797724e 100644 --- a/src/util/virevent.c +++ b/src/util/virevent.c @@ -26,6 +26,7 @@ #include "virlog.h" #include "virerror.h" +#define VIR_FROM_THIS VIR_FROM_EVENT VIR_LOG_INIT("util.event"); @@ -251,6 +252,27 @@ void virEventRegisterImpl(virEventAddHandleFunc addHandle, removeTimeoutImpl = removeTimeout; } + +/** + * virEventRequireImpl: + * + * Require that there is an event loop implementation + * registered. + * + * Returns: -1 if no event loop is registered, 0 otherwise + */ +int virEventRequireImpl(void) +{ + if (!addHandleImpl || !addTimeoutImpl) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("An event loop implementation must be registered")); + return -1; + } + + return 0; +} + + /** * virEventRegisterDefaultImpl: * @@ -276,6 +298,8 @@ int virEventRegisterDefaultImpl(void) { VIR_DEBUG("registering default event implementation"); + virInitialize(); + virResetLastError(); if (virEventPollInit() < 0) { diff --git a/src/util/virevent.h b/src/util/virevent.h index 0b4f7d2b1b..6c8fdcbac4 100644 --- a/src/util/virevent.h +++ b/src/util/virevent.h @@ -21,3 +21,5 @@ #pragma once #include "internal.h" + +int virEventRequireImpl(void);