diff --git a/interfaces/innerkits/ipc_core/include/message_parcel.h b/interfaces/innerkits/ipc_core/include/message_parcel.h index 9a8390b7ed54faceef69c2466fd26247f3f6a29a..7a941afc028cf8167e9de7d8a3b3d6b129270aef 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 fb90ffb86ecbd66b2ef347c8fb5303f293d4325f..fa6f2dd8575136fa3033ca57fbf34a931e021700 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 cf02e96fafd0e0d73aef46965d77871861c8c2fa..e3da09bc672c0f5d0419a723b2b6d0421cea1a71 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: