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) { \ ((GDBusArgInfo *) (&((const GDBusArgInfo) { \
.ref_count = -1, \ .ref_count = -1, \
.name = a_name, \ .name = name_, \
__VA_ARGS__ \ __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(...) \ #define NM_DEFINE_GDBUS_ARG_INFOS(...) \
((GDBusArgInfo **) ((const GDBusArgInfo *[]) { \ ((GDBusArgInfo **) ((const GDBusArgInfo *[]) { \
__VA_ARGS__ \ __VA_ARGS__ \
NULL, \ NULL, \
})) }))
#define NM_DEFINE_GDBUS_METHOD_INFO(m_name, ...) \ #define NM_DEFINE_GDBUS_PROPERTY_INFO(name_, ...) \
((GDBusMethodInfo *) (&((const GDBusMethodInfo) { \ ((GDBusPropertyInfo *) (&((const GDBusPropertyInfo) { \
.ref_count = -1, \ .ref_count = -1, \
.name = m_name, \ .name = name_, \
__VA_ARGS__ \ __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(...) \ #define NM_DEFINE_GDBUS_METHOD_INFOS(...) \
((GDBusMethodInfo **) ((const GDBusMethodInfo *[]) { \ ((GDBusMethodInfo **) ((const GDBusMethodInfo *[]) { \
__VA_ARGS__ \ __VA_ARGS__ \
NULL, \ NULL, \
})) }))
#define NM_DEFINE_GDBUS_INTERFACE_INFO(variable, i_name, ...) \ #define NM_DEFINE_GDBUS_INTERFACE_INFO_INIT(name_, ...) \
static GDBusInterfaceInfo *const variable = ((GDBusInterfaceInfo *) (&((const GDBusInterfaceInfo) { \ { \
.ref_count = -1, \ .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__ \ __VA_ARGS__ \
}))) })))

View file

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

View file

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