Re: [PATCH 1/2] obexd: Use g_dbus_get_properties when parsing MAP-msg-listing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Christian,

On Thu, Aug 22, 2013 at 7:08 PM, Christian Fetzer
<christian.fetzer@xxxxxxxxxxxxxxxx> wrote:
> From: Christian Fetzer <christian.fetzer@xxxxxxxxxxxx>
>
> Currently the message D-Bus properties for the ListMessages response are put
> together manually in the parse_* functions unsing obex_dbus_dict_append.
> This patch simplifies it by calling g_dbus_get_properties for every message.
> ---
>  obexd/client/map.c | 84 ++++++++++++++----------------------------------------
>  1 file changed, 21 insertions(+), 63 deletions(-)
>
> diff --git a/obexd/client/map.c b/obexd/client/map.c
> index 3d8acc4..8864a54 100644
> --- a/obexd/client/map.c
> +++ b/obexd/client/map.c
> @@ -790,81 +790,60 @@ static struct map_msg *map_msg_create(struct map_data *data, const char *handle)
>         return msg;
>  }
>
> -static void parse_subject(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_subject(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->subject);
>         msg->subject = g_strdup(value);
> -       obex_dbus_dict_append(iter, "Subject", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_datetime(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_datetime(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->timestamp);
>         msg->timestamp = g_strdup(value);
> -       obex_dbus_dict_append(iter, "Timestamp", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_sender(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_sender(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->sender);
>         msg->sender = g_strdup(value);
> -       obex_dbus_dict_append(iter, "Sender", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_sender_address(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_sender_address(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->sender_address);
>         msg->sender_address = g_strdup(value);
> -       obex_dbus_dict_append(iter, "SenderAddress", DBUS_TYPE_STRING,
> -                                                               &value);
>  }
>
> -static void parse_replyto(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_replyto(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->replyto);
>         msg->replyto = g_strdup(value);
> -       obex_dbus_dict_append(iter, "ReplyTo", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_recipient(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_recipient(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->recipient);
>         msg->recipient = g_strdup(value);
> -       obex_dbus_dict_append(iter, "Recipient", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_recipient_address(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_recipient_address(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->recipient_address);
>         msg->recipient_address = g_strdup(value);
> -       obex_dbus_dict_append(iter, "RecipientAddress", DBUS_TYPE_STRING,
> -                                                               &value);
>  }
>
> -static void parse_type(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_type(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->type);
>         msg->type = g_strdup(value);
> -       obex_dbus_dict_append(iter, "Type", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_size(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_size(struct map_msg *msg, const char *value)
>  {
>         msg->size = g_ascii_strtoll(value, NULL, 10);
> -       obex_dbus_dict_append(iter, "Size", DBUS_TYPE_UINT64, &msg->size);
>  }
>
> -static void parse_text(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_text(struct map_msg *msg, const char *value)
>  {
>         gboolean flag = strcasecmp(value, "no") != 0;
>
> @@ -873,27 +852,20 @@ static void parse_text(struct map_msg *msg, const char *value,
>         else
>                 msg->flags &= ~MAP_MSG_FLAG_TEXT;
>
> -       obex_dbus_dict_append(iter, "Text", DBUS_TYPE_BOOLEAN, &flag);
>  }
>
> -static void parse_status(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_status(struct map_msg *msg, const char *value)
>  {
>         g_free(msg->status);
>         msg->status = g_strdup(value);
> -       obex_dbus_dict_append(iter, "Status", DBUS_TYPE_STRING, &value);
>  }
>
> -static void parse_attachment_size(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_attachment_size(struct map_msg *msg, const char *value)
>  {
>         msg->attachment_size = g_ascii_strtoll(value, NULL, 10);
> -       obex_dbus_dict_append(iter, "AttachmentSize", DBUS_TYPE_UINT64,
> -                                                       &msg->attachment_size);
>  }
>
> -static void parse_priority(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_priority(struct map_msg *msg, const char *value)
>  {
>         gboolean flag = strcasecmp(value, "no") != 0;
>
> @@ -902,11 +874,9 @@ static void parse_priority(struct map_msg *msg, const char *value,
>         else
>                 msg->flags &= ~MAP_MSG_FLAG_PRIORITY;
>
> -       obex_dbus_dict_append(iter, "Priority", DBUS_TYPE_BOOLEAN, &flag);
>  }
>
> -static void parse_read(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_read(struct map_msg *msg, const char *value)
>  {
>         gboolean flag = strcasecmp(value, "no") != 0;
>
> @@ -915,11 +885,9 @@ static void parse_read(struct map_msg *msg, const char *value,
>         else
>                 msg->flags &= ~MAP_MSG_FLAG_READ;
>
> -       obex_dbus_dict_append(iter, "Read", DBUS_TYPE_BOOLEAN, &flag);
>  }
>
> -static void parse_sent(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_sent(struct map_msg *msg, const char *value)
>  {
>         gboolean flag = strcasecmp(value, "no") != 0;
>
> @@ -928,11 +896,9 @@ static void parse_sent(struct map_msg *msg, const char *value,
>         else
>                 msg->flags &= ~MAP_MSG_FLAG_SENT;
>
> -       obex_dbus_dict_append(iter, "Sent", DBUS_TYPE_BOOLEAN, &flag);
>  }
>
> -static void parse_protected(struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter)
> +static void parse_protected(struct map_msg *msg, const char *value)
>  {
>         gboolean flag = strcasecmp(value, "no") != 0;
>
> @@ -941,13 +907,11 @@ static void parse_protected(struct map_msg *msg, const char *value,
>         else
>                 msg->flags &= ~MAP_MSG_FLAG_PROTECTED;
>
> -       obex_dbus_dict_append(iter, "Protected", DBUS_TYPE_BOOLEAN, &flag);
>  }
>
>  static struct map_msg_parser {
>         const char *name;
> -       void (*func) (struct map_msg *msg, const char *value,
> -                                                       DBusMessageIter *iter);
> +       void (*func) (struct map_msg *msg, const char *value);
>  } msg_parsers[] = {
>                 { "subject", parse_subject },
>                 { "datetime", parse_datetime },
> @@ -974,7 +938,7 @@ static void msg_element(GMarkupParseContext *ctxt, const char *element,
>  {
>         struct map_parser *parser = user_data;
>         struct map_data *data = parser->data;
> -       DBusMessageIter entry, dict, *iter = parser->iter;
> +       DBusMessageIter entry, *iter = parser->iter;
>         struct map_msg *msg;
>         const char *key;
>         int i;
> @@ -1000,25 +964,19 @@ static void msg_element(GMarkupParseContext *ctxt, const char *element,
>         dbus_message_iter_append_basic(&entry, DBUS_TYPE_OBJECT_PATH,
>                                                                 &msg->path);
>
> -       dbus_message_iter_open_container(&entry, DBUS_TYPE_ARRAY,
> -                                       DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
> -                                       DBUS_TYPE_STRING_AS_STRING
> -                                       DBUS_TYPE_VARIANT_AS_STRING
> -                                       DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
> -                                       &dict);
> -
>         for (i = 0, key = names[i]; key; key = names[++i]) {
>                 struct map_msg_parser *parser;
>
>                 for (parser = msg_parsers; parser && parser->name; parser++) {
>                         if (strcasecmp(key, parser->name) == 0) {
> -                               parser->func(msg, values[i], &dict);
> +                               parser->func(msg, values[i]);
>                                 break;
>                         }
>                 }
>         }
>
> -       dbus_message_iter_close_container(&entry, &dict);
> +       g_dbus_get_properties(conn, msg->path, MAP_MSG_INTERFACE, &entry);
> +
>         dbus_message_iter_close_container(iter, &entry);
>  }
>
> --
> 1.8.3.4

Patch 1/2 applied, please modify and rebase 2/2.


-- 
Luiz Augusto von Dentz
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux