Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5290288ybl; Tue, 10 Dec 2019 03:42:03 -0800 (PST) X-Google-Smtp-Source: APXvYqxXKe8I5cCysm0VPW8zl3CoAnOMmINZk+ajmoNm2ozuoNEpAqvOGcf5JGjTKKKyFzoUrewW X-Received: by 2002:aca:1a10:: with SMTP id a16mr3617347oia.9.1575978123417; Tue, 10 Dec 2019 03:42:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575978123; cv=none; d=google.com; s=arc-20160816; b=S1o4rICnhvIRvoG3DaCYUEEZ7w6BZdp6Ndxj3A6ygS6evgu2MjpQ7/cnY/HAaAfOWk BY7DPpJfz9oShRAKOw4/tlk/C/4uwbnMpj1mEIXfOq6TjFEGQ1y15/Kb9i48OSE/1eWK PqxDHYieh1ba71nfqrIdgbWRIhti5BU3ACw+4n45XiBvYzVcZYFDBgjr5woVK3AJ0Eu1 zBCIK7qEsqrso8hjvJC0B3BuJxuM72uu7mjn8yXwAm1nXP2jTCFiArdwTDBpTTNYfaqI URmT8uqhmRe4/DLeAYAAPsg9XvLZ7G1Rp9HzqiBDDdjH7IWBuF3Vm+ivAZv+hzktRpBY uXqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:to:from; bh=9D4RMx25o1NVQxVzWWh51diXPpvSmeH4Vmfb/MQtq34=; b=YyUCJAzr3ioyd2wWTKf5cvh/aP0QAuk/brW/cJRaSOsOhi/SvjQ9uU7cdPe1U6LjsV Ow8UwtAR4bGkSvB4U+x/2tCGlxQRwIVeXpzai3sdCYiYUsTYXtOMysbI7XTJQ1zyDObJ i64duyEk1zpEl4nFa4OskDO952I4/NwWM2kOlOZBc29lyIzL2WUlTPbEZUj5a+v4Ahmp Rr5qAnp5+UFPRU4jJQLHhwAB2og1okx8GN07MKsxASmK56iQQ+r4rSfWhgo8tFSFKooP wDDgEfNifwxe4udlbOo1TGuZtT3HFHaM9ZMes3FTjno9jJ4yom5fhlJRZQfUTBj8S+ws uI5Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k126si1810626oib.43.2019.12.10.03.41.52; Tue, 10 Dec 2019 03:42:03 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727436AbfLJLlY (ORCPT + 99 others); Tue, 10 Dec 2019 06:41:24 -0500 Received: from mga07.intel.com ([134.134.136.100]:28846 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727116AbfLJLlY (ORCPT ); Tue, 10 Dec 2019 06:41:24 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Dec 2019 03:41:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,299,1571727600"; d="scan'208";a="210420796" Received: from unknown (HELO ajay-desktop.iind.intel.com) ([10.223.96.133]) by fmsmga008.fm.intel.com with ESMTP; 10 Dec 2019 03:41:23 -0800 From: Ajay Kishore To: linux-bluetooth@vger.kernel.org Subject: [PATCH 3/5] obexd: Get conversation listings Date: Tue, 10 Dec 2019 16:46:59 +0530 Message-Id: <1575976621-11019-3-git-send-email-ajay.kishore@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1575976621-11019-1-git-send-email-ajay.kishore@intel.com> References: <1575976621-11019-1-git-send-email-ajay.kishore@intel.com> Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Changes made to build get conversation listing command and its respective callback function to handle response for conversation listing. Co-authored-by: Bharat Bhusan Panda Signed-off-by: Ajay Kishore --- obexd/client/map.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/obexd/client/map.c b/obexd/client/map.c index 9464606..f2f2b73 100644 --- a/obexd/client/map.c +++ b/obexd/client/map.c @@ -1222,6 +1222,64 @@ clean: pending_request_free(request); } +static void conversation_listing_cb(struct obc_session *session, + struct obc_transfer *transfer, + GError *err, void *user_data) +{ + struct pending_request *request = user_data; + struct map_parser *parser; + GMarkupParseContext *ctxt; + DBusMessage *reply; + DBusMessageIter iter, array; + char *contents; + size_t size; + int perr; + + if (err != NULL) { + reply = g_dbus_create_error(request->msg, + ERROR_INTERFACE ".Failed", + "%s", err->message); + goto done; + } + + perr = obc_transfer_get_contents(transfer, &contents, &size); + if (perr < 0) { + reply = g_dbus_create_error(request->msg, + ERROR_INTERFACE ".Failed", + "Error reading contents: %s", + strerror(-perr)); + goto done; + } + + reply = dbus_message_new_method_return(request->msg); + if (reply == NULL) { + g_free(contents); + goto clean; + } + + dbus_message_iter_init_append(reply, &iter); + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_OBJECT_PATH_AS_STRING + DBUS_TYPE_ARRAY_AS_STRING + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING, + &array); + + dbus_message_iter_close_container(&iter, &array); + g_free(contents); + +done: + if (convo_element_end) + if (g_dbus_send_message(conn, reply)) + convo_element_end = FALSE; +clean: + pending_request_free(request); +} + static char *get_absolute_folder(struct map_data *map, const char *subfolder) { const char *root = obc_session_get_folder(map->session); @@ -1270,6 +1328,43 @@ fail: return reply; } +static DBusMessage *get_conversations_listing(struct map_data *map, + DBusMessage *message, + const char *folder, + GObexApparam *apparam) +{ + struct pending_request *request; + struct obc_transfer *transfer; + GError *err = NULL; + DBusMessage *reply; + + transfer = obc_transfer_get("x-bt/MAP-convo-listing", folder, NULL, + &err); + + if (transfer == NULL) { + g_obex_apparam_free(apparam); + goto fail; + } + obc_transfer_set_apparam(transfer, apparam); + + request = pending_request_new(map, message); + request->folder = get_absolute_folder(map, folder); + + if (!obc_session_queue(map->session, transfer, + conversation_listing_cb, request, &err)) { + pending_request_free(request); + goto fail; + } + + return NULL; + +fail: + reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", + err->message); + g_error_free(err); + return reply; +} + static GObexApparam *parse_subject_length(GObexApparam *apparam, DBusMessageIter *iter) { @@ -1682,8 +1777,7 @@ static DBusMessage *map_list_conversations(DBusConnection *connection, ERROR_INTERFACE ".InvalidArguments", NULL); } - /*TODO: Return conversation listing */ - return NULL; + return get_conversations_listing(map, message, folder, apparam); } static char **get_filter_strs(uint64_t filter, int *size) -- 2.7.4