From 8a3c869d4cdbe4dd42b3474d880f52261bca8fcc Mon Sep 17 00:00:00 2001 From: liubb_0516 Date: Fri, 20 May 2022 16:54:30 +0800 Subject: [PATCH] move messageparcelappend to utils parcel Signed-off-by: liubb_0516 --- .../ipc_core/include/message_parcel.h | 1 - ipc/native/src/core/source/message_parcel.cpp | 39 ------------------- .../native/src/test_service_skeleton.cpp | 5 ++- 3 files changed, 3 insertions(+), 42 deletions(-) diff --git a/interfaces/innerkits/ipc_core/include/message_parcel.h b/interfaces/innerkits/ipc_core/include/message_parcel.h index 9a8390b..7a941af 100644 --- a/interfaces/innerkits/ipc_core/include/message_parcel.h +++ b/interfaces/innerkits/ipc_core/include/message_parcel.h @@ -50,7 +50,6 @@ public: { needCloseFd_ = true; }; - bool MessageParcelAppend(MessageParcel &data); private: #ifndef CONFIG_IPC_SINGLE diff --git a/ipc/native/src/core/source/message_parcel.cpp b/ipc/native/src/core/source/message_parcel.cpp index fb90ffb..fa6f2dd 100644 --- a/ipc/native/src/core/source/message_parcel.cpp +++ b/ipc/native/src/core/source/message_parcel.cpp @@ -422,43 +422,4 @@ sptr MessageParcel::ReadAshmem() } return new (std::nothrow) Ashmem(fd, size); } - -bool MessageParcel::MessageParcelAppend(MessageParcel &data) -{ - size_t dataSize = data.GetDataSize(); - if (dataSize == 0) { - DBINDER_LOGE("no data to append"); - return true; - } - uintptr_t dataPtr = data.GetData(); - size_t writeCursorOld = this->GetWritePosition(); - if (!WriteBuffer(reinterpret_cast(dataPtr), dataSize)) { - DBINDER_LOGE("data append write buffer failed"); - return false; - } - size_t objectSize = data.GetOffsetsSize(); - if (objectSize == 0) { - return true; - } - binder_size_t objectOffsets = data.GetObjectOffsets(); - auto *newObjectOffsets = reinterpret_cast(objectOffsets); - for (size_t index = 0; index < objectSize; index++) { - if (EnsureObjectsCapacity()) { - size_t offset = writeCursorOld + newObjectOffsets[index]; - bool res = WriteObjectOffset(offset); - if (!res) { - DBINDER_LOGE("parcel append write offsets failed"); - return false; - } - flat_binder_object *flat = reinterpret_cast(this->GetData() + offset); - if (flat->hdr.type == BINDER_TYPE_FD) { - flat->handle = dup(flat->handle); - } - } else { - DBINDER_LOGE("Failed to ensure parcel capacity"); - return false; - } - } - return true; -} } // namespace OHOS diff --git a/ipc/test/auxiliary/native/src/test_service_skeleton.cpp b/ipc/test/auxiliary/native/src/test_service_skeleton.cpp index cf02e96..e3da09b 100644 --- a/ipc/test/auxiliary/native/src/test_service_skeleton.cpp +++ b/ipc/test/auxiliary/native/src/test_service_skeleton.cpp @@ -428,7 +428,7 @@ int TestServiceProxy::TestAccessTokenID(int32_t ftoken_expected) int TestServiceProxy::TestMessageParcelAppend(MessageParcel &dst, MessageParcel &src) { - bool res = dst.MessageParcelAppend(src); + bool res = dst.ParcelAppend(src); if (!res) { ZLOGE(LABEL, "TestMessageParcelAppend without ipc failed"); return -1; @@ -439,7 +439,7 @@ int TestServiceProxy::TestMessageParcelAppend(MessageParcel &dst, MessageParcel int TestServiceProxy::TestMessageParcelAppendWithIpc(MessageParcel &dst, MessageParcel &src, MessageParcel &reply, bool withObject) { - bool res = dst.MessageParcelAppend(src); + bool res = dst.ParcelAppend(src); if (!res) { ZLOGE(LABEL, "TestMessageParcelAppend with ipc failed"); return -1; @@ -685,6 +685,7 @@ int TestServiceStub::OnRemoteRequest(uint32_t code, reply.WriteInt32(data.ReadInt32()); reply.WriteString(data.ReadString()); reply.WriteRemoteObject(data.ReadRemoteObject()); + reply.WriteFileDescriptor(data.ReadFileDescriptor()); break; } default: -- GitLab