From: Andrzej Popowski Date: Tue, 29 Dec 2015 14:03:43 +0000 (+0100) Subject: [messageport] - changing a way how to iterate a bundle X-Git-Tag: submit/tizen/20160111.002222^2~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f3d7393e1df1f2308feeec64b6ac5493b0682c17;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [messageport] - changing a way how to iterate a bundle Change-Id: Ia476998e48d9c7adae9c18a6380e5e3512b74057 Signed-off-by: Andrzej Popowski --- diff --git a/src/messageport/messageport_instance.cc b/src/messageport/messageport_instance.cc index cfc2370e..97882dee 100755 --- a/src/messageport/messageport_instance.cc +++ b/src/messageport/messageport_instance.cc @@ -67,12 +67,52 @@ enum MessageportCallbacks { LocalMessagePortAddmessageportlistenerCallback }; -static void BundleJsonIterator(const char *k, const char *v, void *d) { +static void BundleJsonIterator(const char *key, const int type, const bundle_keyval_t *kv, void *d) { LoggerD("Enter"); + + void *basic_val = nullptr; + size_t basic_size = 0; + picojson::value::array *array = static_cast(d); picojson::value::object o; - o["key"] = picojson::value(k); - o["value"] = picojson::value(v); + + switch (bundle_keyval_get_type(const_cast(kv))) { + case BUNDLE_TYPE_STR: + bundle_keyval_get_basic_val(const_cast(kv), &basic_val, &basic_size); + o["key"] = picojson::value(key); + o["value"] = picojson::value(static_cast(basic_val)); + break; + + case BUNDLE_TYPE_STR_ARRAY: { + picojson::value::array tab; + void **array_val = nullptr; + unsigned int array_len = 0; + size_t *array_elem_size = nullptr; + + bundle_keyval_get_array_val(const_cast(kv), + &array_val, + &array_len, + &array_elem_size); + + for (unsigned int i = 0; i < array_len; i++) { + tab.push_back(picojson::value(((char**) array_val)[i])); + } + + o["key"] = picojson::value(key); + o["value"] = picojson::value(picojson::value(tab).serialize()); + + break; + } + + case BUNDLE_TYPE_BYTE: + case BUNDLE_TYPE_BYTE_ARRAY: + default: + // For now sending only string data is supported by messageport + // We ignore rest of them and we send an empty value instead + o["key"] = picojson::value(key); + o["value"] = picojson::value(); + break; + } array->push_back(picojson::value(o)); } @@ -102,7 +142,7 @@ static void OnReceiveLocalMessage(int local_port_id, LoggerD("Msg received"); - bundle_iterate(message, BundleJsonIterator, &data); + bundle_foreach(message, BundleJsonIterator, &data); o["message"] = picojson::value(data);