mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 06:50:22 +03:00
virdbus: Add virDBusHasSystemBus()
Some systems may not use DBus in their system. Add a method to check if the system bus is available that doesn't print error messages so that code can later check for this condition and use an alternative approach.
This commit is contained in:
parent
39d963d1c0
commit
2398dd3d3e
@ -1294,6 +1294,7 @@ virConfWriteMem;
|
||||
virDBusCallMethod;
|
||||
virDBusGetSessionBus;
|
||||
virDBusGetSystemBus;
|
||||
virDBusHasSystemBus;
|
||||
virDBusMessageDecode;
|
||||
virDBusMessageEncode;
|
||||
virDBusMessageRead;
|
||||
|
@ -73,7 +73,8 @@ static void virDBusSystemBusInit(void)
|
||||
systembus = virDBusBusInit(DBUS_BUS_SYSTEM, &systemdbuserr);
|
||||
}
|
||||
|
||||
DBusConnection *virDBusGetSystemBus(void)
|
||||
static DBusConnection *
|
||||
virDBusGetSystemBusInternal(void)
|
||||
{
|
||||
if (virOnce(&systemonce, virDBusSystemBusInit) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
@ -81,14 +82,34 @@ DBusConnection *virDBusGetSystemBus(void)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!systembus) {
|
||||
return systembus;
|
||||
}
|
||||
|
||||
|
||||
DBusConnection *
|
||||
virDBusGetSystemBus(void)
|
||||
{
|
||||
DBusConnection *bus;
|
||||
|
||||
if (!(bus = virDBusGetSystemBusInternal())) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unable to get DBus system bus connection: %s"),
|
||||
systemdbuserr.message ? systemdbuserr.message : "watch setup failed");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return systembus;
|
||||
return bus;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
virDBusHasSystemBus(void)
|
||||
{
|
||||
if (virDBusGetSystemBusInternal())
|
||||
return true;
|
||||
|
||||
VIR_DEBUG("System DBus not available: %s", NULLSTR(systemdbuserr.message));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -1195,6 +1216,15 @@ DBusConnection *virDBusGetSystemBus(void)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
virDBusHasSystemBus(void)
|
||||
{
|
||||
VIR_DEBUG("DBus support not compiled into this binary");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
DBusConnection *virDBusGetSessionBus(void)
|
||||
{
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
|
@ -32,6 +32,7 @@
|
||||
# include "internal.h"
|
||||
|
||||
DBusConnection *virDBusGetSystemBus(void);
|
||||
bool virDBusHasSystemBus(void);
|
||||
DBusConnection *virDBusGetSessionBus(void);
|
||||
|
||||
int virDBusCallMethod(DBusConnection *conn,
|
||||
|
Loading…
x
Reference in New Issue
Block a user