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 | |
parent | b1d144b35ecdd617b00e6e07a43f7a7e07bafb7a (diff) |
Move dictionary helper to common code
-rw-r--r-- | hcid/dbus-common.c | 32 | ||||
-rw-r--r-- | hcid/dbus-common.h | 3 | ||||
-rw-r--r-- | hcid/dbus-service.c | 29 |
3 files changed, 35 insertions, 29 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; diff --git a/hcid/dbus-common.h b/hcid/dbus-common.h index 4039a9cc..498f7eb4 100644 --- a/hcid/dbus-common.h +++ b/hcid/dbus-common.h @@ -36,6 +36,9 @@ typedef DBusHandlerResult (*service_handler_func_t) (DBusConnection *conn, DBusMessage *msg, void *user_data); +void append_dict_entry(DBusMessageIter *dict, const char *key, + int type, void *val); + struct service_data { const char *name; service_handler_func_t handler_func; diff --git a/hcid/dbus-service.c b/hcid/dbus-service.c index f32dfcec..fc1592c1 100644 --- a/hcid/dbus-service.c +++ b/hcid/dbus-service.c @@ -101,35 +101,6 @@ static void service_exit(const char *name, struct service *service) service->bus_name = NULL; } -static 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; - 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); -} - static DBusHandlerResult get_info(DBusConnection *conn, DBusMessage *msg, void *data) { |