diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2007-03-21 20:19:53 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2007-03-21 20:19:53 +0000 |
commit | bdbad0d759c9f5c8092afd2cac4e1a76722b4517 (patch) | |
tree | 036ac711301237b2c6b20322ec8381c8261e7631 /hcid/dbus-common.c | |
parent | b1d144b35ecdd617b00e6e07a43f7a7e07bafb7a (diff) |
Move dictionary helper to common code
Diffstat (limited to 'hcid/dbus-common.c')
-rw-r--r-- | hcid/dbus-common.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/hcid/dbus-common.c b/hcid/dbus-common.c index 2c84a5b2..3e059158 100644 --- a/hcid/dbus-common.c +++ b/hcid/dbus-common.c @@ -70,6 +70,38 @@ static sdp_session_t *sess = NULL; static int experimental = 0; +void append_dict_entry(DBusMessageIter *dict, const char *key, + int type, void *val) +{ + DBusMessageIter entry; + DBusMessageIter value; + char *sig; + + dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); + + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + + switch (type) { + case DBUS_TYPE_STRING: + sig = DBUS_TYPE_STRING_AS_STRING; + break; + case DBUS_TYPE_UINT32: + sig = DBUS_TYPE_UINT32_AS_STRING; + break; + default: + sig = DBUS_TYPE_VARIANT_AS_STRING; + break; + } + + dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, sig, &value); + + dbus_message_iter_append_basic(&value, type, &val); + + dbus_message_iter_close_container(&entry, &value); + + dbus_message_iter_close_container(dict, &entry); +} + service_handler_func_t find_service_handler(struct service_data *handlers, DBusMessage *msg) { struct service_data *current; |