From 1563082691a1c5e060cbe4b1e2ed42f587dd9a0c Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Fri, 23 Sep 2022 10:41:39 +0000 Subject: [PATCH] Use modified tizen_base::Parcel To improve the performance of the parcel creation, the implementation of the Parcel is changed. It uses malloc() instead of std::vector. Requires: - https://review.tizen.org/gerrit/#/c/platform/core/base/bundle/+/281779/ Change-Id: I19b804a5be94dd814a83a1067f3924e1085ccece Signed-off-by: Hwankyu Jhun --- aul/socket/client.cc | 3 +-- aul/socket/packet.cc | 4 ++-- src/aul_sock.cc | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/aul/socket/client.cc b/aul/socket/client.cc index 2e272c8..d9c1ce9 100644 --- a/aul/socket/client.cc +++ b/aul/socket/client.cc @@ -65,8 +65,7 @@ int Client::Send(const Packet& packet) { _W("cmd(%d)", packet.GetCmd()); tizen_base::Parcel parcel; parcel.WriteParcelable(packet); - auto raw = parcel.GetRaw(); - return Socket::Send(reinterpret_cast(&raw[0]), raw.size()); + return Socket::Send(parcel.GetData(), parcel.GetDataSize()); } int Client::Recv(Packet** packet) { diff --git a/aul/socket/packet.cc b/aul/socket/packet.cc index d291274..d99ab9f 100644 --- a/aul/socket/packet.cc +++ b/aul/socket/packet.cc @@ -31,7 +31,7 @@ Packet::Packet(int cmd, int opt, tizen_base::Bundle data) : cmd_(cmd), opt_(opt) { auto raw = data.ToRaw(); auto* raw_ptr = reinterpret_cast(raw.first.get()); - std::copy(raw_ptr, raw_ptr + raw.second, std::back_inserter(data_)); + data_.insert(data_.end(), raw_ptr, raw_ptr + raw.second); } Packet::Packet(const unsigned char* buf, unsigned int size) @@ -94,7 +94,7 @@ void Packet::ReadFromParcel(tizen_base::Parcel* parcel) { std::unique_ptr ptr(data); parcel->Read(data, size); - std::copy(data, data + size, std::back_inserter(data_)); + data_.insert(data_.end(), data, data + size); } } diff --git a/src/aul_sock.cc b/src/aul_sock.cc index 681f5d2..b6cee88 100644 --- a/src/aul_sock.cc +++ b/src/aul_sock.cc @@ -225,9 +225,8 @@ int SendAndReceive(ClientSocket* client, int cmd, unsigned char* data, Packet packet(cmd, opt, { data, data + datalen }); tizen_base::Parcel parcel; parcel.WriteParcelable(packet); - auto raw = parcel.GetRaw(); - int ret = client->Send(reinterpret_cast(&raw[0]), raw.size()); + int ret = client->Send(parcel.GetData(), parcel.GetDataSize()); if (ret != 0 || opt & AUL_SOCK_NOREPLY) { if (opt & AUL_SOCK_ASYNC) client->RemoveFd(); -- 2.7.4