dbus: extend NM_DEFINE_GDBUS*() helper macros

This commit is contained in:
Thomas Haller 2018-02-26 11:25:08 +01:00
parent 70b24819a0
commit 14ffe6bc55
3 changed files with 67 additions and 28 deletions

View file

@ -469,36 +469,89 @@ int nm_utils_fd_read_loop_exact (int fd, void *buf, size_t nbytes, bool do_poll)
/*****************************************************************************/
#define NM_DEFINE_GDBUS_ARG_INFO(a_name, ...) \
#define NM_DEFINE_GDBUS_ARG_INFO_FULL(name_, ...) \
((GDBusArgInfo *) (&((const GDBusArgInfo) { \
.ref_count = -1, \
.name = a_name, \
.name = name_, \
__VA_ARGS__ \
})))
#define NM_DEFINE_GDBUS_ARG_INFO(name_, a_signature) \
NM_DEFINE_GDBUS_ARG_INFO_FULL ( \
name_, \
.signature = a_signature, \
)
#define NM_DEFINE_GDBUS_ARG_INFOS(...) \
((GDBusArgInfo **) ((const GDBusArgInfo *[]) { \
__VA_ARGS__ \
NULL, \
}))
#define NM_DEFINE_GDBUS_METHOD_INFO(m_name, ...) \
((GDBusMethodInfo *) (&((const GDBusMethodInfo) { \
#define NM_DEFINE_GDBUS_PROPERTY_INFO(name_, ...) \
((GDBusPropertyInfo *) (&((const GDBusPropertyInfo) { \
.ref_count = -1, \
.name = m_name, \
.name = name_, \
__VA_ARGS__ \
})))
#define NM_DEFINE_GDBUS_PROPERTY_INFO_READABLE(name_, m_signature) \
NM_DEFINE_GDBUS_PROPERTY_INFO ( \
name_, \
.signature = m_signature, \
.flags = G_DBUS_PROPERTY_INFO_FLAGS_READABLE, \
)
#define NM_DEFINE_GDBUS_PROPERTY_INFOS(...) \
((GDBusPropertyInfo **) ((const GDBusPropertyInfo *[]) { \
__VA_ARGS__ \
NULL, \
}))
#define NM_DEFINE_GDBUS_SIGNAL_INFO_INIT(name_, ...) \
{ \
.ref_count = -1, \
.name = name_, \
__VA_ARGS__ \
}
#define NM_DEFINE_GDBUS_SIGNAL_INFO(name_, ...) \
((GDBusSignalInfo *) (&((const GDBusSignalInfo) NM_DEFINE_GDBUS_SIGNAL_INFO_INIT (name_, __VA_ARGS__))))
#define NM_DEFINE_GDBUS_SIGNAL_INFOS(...) \
((GDBusSignalInfo **) ((const GDBusSignalInfo *[]) { \
__VA_ARGS__ \
NULL, \
}))
#define NM_DEFINE_GDBUS_METHOD_INFO_INIT(name_, ...) \
{ \
.ref_count = -1, \
.name = name_, \
__VA_ARGS__ \
}
#define NM_DEFINE_GDBUS_METHOD_INFO(name_, ...) \
((GDBusMethodInfo *) (&((const GDBusMethodInfo) NM_DEFINE_GDBUS_METHOD_INFO_INIT (name_, __VA_ARGS__))))
#define NM_DEFINE_GDBUS_METHOD_INFOS(...) \
((GDBusMethodInfo **) ((const GDBusMethodInfo *[]) { \
__VA_ARGS__ \
NULL, \
}))
#define NM_DEFINE_GDBUS_INTERFACE_INFO(variable, i_name, ...) \
static GDBusInterfaceInfo *const variable = ((GDBusInterfaceInfo *) (&((const GDBusInterfaceInfo) { \
#define NM_DEFINE_GDBUS_INTERFACE_INFO_INIT(name_, ...) \
{ \
.ref_count = -1, \
.name = i_name, \
.name = name_, \
__VA_ARGS__ \
}
#define NM_DEFINE_GDBUS_INTERFACE_INFO(name_, ...) \
((GDBusInterfaceInfo *) (&((const GDBusInterfaceInfo) NM_DEFINE_GDBUS_INTERFACE_INFO_INIT (name_, __VA_ARGS__))))
#define NM_DEFINE_GDBUS_INTERFACE_VTABLE(...) \
((GDBusInterfaceVTable *) (&((const GDBusInterfaceVTable) { \
__VA_ARGS__ \
})))

View file

@ -204,17 +204,13 @@ _method_call (GDBusConnection *connection,
g_dbus_method_invocation_return_value (invocation, NULL);
}
NM_DEFINE_GDBUS_INTERFACE_INFO (
interface_info,
static GDBusInterfaceInfo *const interface_info = NM_DEFINE_GDBUS_INTERFACE_INFO (
NM_DHCP_HELPER_SERVER_INTERFACE_NAME,
.methods = NM_DEFINE_GDBUS_METHOD_INFOS (
NM_DEFINE_GDBUS_METHOD_INFO (
NM_DHCP_HELPER_SERVER_METHOD_NOTIFY,
.in_args = NM_DEFINE_GDBUS_ARG_INFOS (
NM_DEFINE_GDBUS_ARG_INFO (
"data",
.signature = "a{sv}",
),
NM_DEFINE_GDBUS_ARG_INFO ("data", "a{sv}"),
),
),
),

View file

@ -821,27 +821,17 @@ _method_call (GDBusConnection *connection,
g_return_if_reached ();
}
NM_DEFINE_GDBUS_INTERFACE_INFO (
interface_info,
static GDBusInterfaceInfo *const interface_info = NM_DEFINE_GDBUS_INTERFACE_INFO (
IFCFGRH1_BUS_NAME,
.methods = NM_DEFINE_GDBUS_METHOD_INFOS (
NM_DEFINE_GDBUS_METHOD_INFO (
IFCFGRH1_IFACE1_METHOD_GET_IFCFG_DETAILS,
.in_args = NM_DEFINE_GDBUS_ARG_INFOS (
NM_DEFINE_GDBUS_ARG_INFO (
"ifcfg",
.signature = "s",
),
NM_DEFINE_GDBUS_ARG_INFO ("ifcfg", "s"),
),
.out_args = NM_DEFINE_GDBUS_ARG_INFOS (
NM_DEFINE_GDBUS_ARG_INFO (
"uuid",
.signature = "s",
),
NM_DEFINE_GDBUS_ARG_INFO (
"path",
.signature = "o",
),
NM_DEFINE_GDBUS_ARG_INFO ("uuid", "s"),
NM_DEFINE_GDBUS_ARG_INFO ("path", "o"),
),
),
),