Use modified tizen_base::Parcel 50/281950/2
authorHwankyu Jhun <h.jhun@samsung.com>
Fri, 23 Sep 2022 10:41:39 +0000 (10:41 +0000)
committerHwanKyu Jhun <h.jhun@samsung.com>
Tue, 27 Sep 2022 05:26:47 +0000 (05:26 +0000)
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 <h.jhun@samsung.com>
aul/socket/client.cc
aul/socket/packet.cc
src/aul_sock.cc

index 2e272c8..d9c1ce9 100644 (file)
@@ -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<void*>(&raw[0]), raw.size());
+  return Socket::Send(parcel.GetData(), parcel.GetDataSize());
 }
 
 int Client::Recv(Packet** packet) {
index d291274..d99ab9f 100644 (file)
@@ -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<unsigned char*>(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<unsigned char[]> ptr(data);
     parcel->Read(data, size);
-    std::copy(data, data + size, std::back_inserter(data_));
+    data_.insert(data_.end(), data, data + size);
   }
 }
 
index 681f5d2..b6cee88 100644 (file)
@@ -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<void*>(&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();