15ccb8f90Sopenharmony_ci/* 25ccb8f90Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 35ccb8f90Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 45ccb8f90Sopenharmony_ci * you may not use this file except in compliance with the License. 55ccb8f90Sopenharmony_ci * You may obtain a copy of the License at 65ccb8f90Sopenharmony_ci * 75ccb8f90Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 85ccb8f90Sopenharmony_ci * 95ccb8f90Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 105ccb8f90Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 115ccb8f90Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 125ccb8f90Sopenharmony_ci * See the License for the specific language governing permissions and 135ccb8f90Sopenharmony_ci * limitations under the License. 145ccb8f90Sopenharmony_ci */ 155ccb8f90Sopenharmony_ci 165ccb8f90Sopenharmony_ci#include "parcel.h" 175ccb8f90Sopenharmony_ci 185ccb8f90Sopenharmony_cinamespace OHOS { 195ccb8f90Sopenharmony_ci 205ccb8f90Sopenharmony_cistatic const size_t DEFAULT_CPACITY = 204800; // 200K 215ccb8f90Sopenharmony_ci 225ccb8f90Sopenharmony_ciParcelable::Parcelable() : Parcelable(false) {} 235ccb8f90Sopenharmony_ci 245ccb8f90Sopenharmony_ciParcelable::Parcelable(bool asRemote) 255ccb8f90Sopenharmony_ci{ 265ccb8f90Sopenharmony_ci asRemote_ = asRemote; 275ccb8f90Sopenharmony_ci behavior_ = 0; 285ccb8f90Sopenharmony_ci} 295ccb8f90Sopenharmony_ci 305ccb8f90Sopenharmony_ciParcel::Parcel(Allocator* allocator) 315ccb8f90Sopenharmony_ci{ 325ccb8f90Sopenharmony_ci if (allocator != nullptr) { 335ccb8f90Sopenharmony_ci allocator_ = allocator; 345ccb8f90Sopenharmony_ci } else { 355ccb8f90Sopenharmony_ci allocator_ = new DefaultAllocator(); 365ccb8f90Sopenharmony_ci } 375ccb8f90Sopenharmony_ci 385ccb8f90Sopenharmony_ci writeCursor_ = 0; 395ccb8f90Sopenharmony_ci readCursor_ = 0; 405ccb8f90Sopenharmony_ci 415ccb8f90Sopenharmony_ci data_ = nullptr; 425ccb8f90Sopenharmony_ci dataSize_ = 0; 435ccb8f90Sopenharmony_ci dataCapacity_ = 0; 445ccb8f90Sopenharmony_ci 455ccb8f90Sopenharmony_ci maxDataCapacity_ = DEFAULT_CPACITY; 465ccb8f90Sopenharmony_ci objectOffsets_ = nullptr; 475ccb8f90Sopenharmony_ci objectCursor_ = 0; 485ccb8f90Sopenharmony_ci objectsCapacity_ = 0; 495ccb8f90Sopenharmony_ci} 505ccb8f90Sopenharmony_ci 515ccb8f90Sopenharmony_ciParcel::Parcel() : Parcel(new DefaultAllocator()) {} 525ccb8f90Sopenharmony_ci 535ccb8f90Sopenharmony_ciParcel::~Parcel() 545ccb8f90Sopenharmony_ci{ 555ccb8f90Sopenharmony_ci FlushBuffer(); 565ccb8f90Sopenharmony_ci delete allocator_; 575ccb8f90Sopenharmony_ci} 585ccb8f90Sopenharmony_ci 595ccb8f90Sopenharmony_cisize_t Parcel::GetWritableBytes() const 605ccb8f90Sopenharmony_ci{ 615ccb8f90Sopenharmony_ci return 0; 625ccb8f90Sopenharmony_ci} 635ccb8f90Sopenharmony_ci 645ccb8f90Sopenharmony_cisize_t Parcel::GetReadableBytes() const 655ccb8f90Sopenharmony_ci{ 665ccb8f90Sopenharmony_ci return 0; 675ccb8f90Sopenharmony_ci} 685ccb8f90Sopenharmony_ci 695ccb8f90Sopenharmony_cisize_t Parcel::CalcNewCapacity(size_t minNewCapacity) 705ccb8f90Sopenharmony_ci{ 715ccb8f90Sopenharmony_ci (void)minNewCapacity; 725ccb8f90Sopenharmony_ci return 0; 735ccb8f90Sopenharmony_ci} 745ccb8f90Sopenharmony_ci 755ccb8f90Sopenharmony_cibool Parcel::EnsureWritableCapacity(size_t desireCapacity) 765ccb8f90Sopenharmony_ci{ 775ccb8f90Sopenharmony_ci (void)desireCapacity; 785ccb8f90Sopenharmony_ci return false; 795ccb8f90Sopenharmony_ci} 805ccb8f90Sopenharmony_ci 815ccb8f90Sopenharmony_cisize_t Parcel::GetDataSize() const 825ccb8f90Sopenharmony_ci{ 835ccb8f90Sopenharmony_ci return dataSize_; 845ccb8f90Sopenharmony_ci} 855ccb8f90Sopenharmony_ci 865ccb8f90Sopenharmony_ciuintptr_t Parcel::GetData() const 875ccb8f90Sopenharmony_ci{ 885ccb8f90Sopenharmony_ci return reinterpret_cast<uintptr_t>(data_); 895ccb8f90Sopenharmony_ci} 905ccb8f90Sopenharmony_ci 915ccb8f90Sopenharmony_cibinder_size_t Parcel::GetObjectOffsets() const 925ccb8f90Sopenharmony_ci{ 935ccb8f90Sopenharmony_ci return reinterpret_cast<binder_size_t>(objectOffsets_); 945ccb8f90Sopenharmony_ci} 955ccb8f90Sopenharmony_ci 965ccb8f90Sopenharmony_cisize_t Parcel::GetOffsetsSize() const 975ccb8f90Sopenharmony_ci{ 985ccb8f90Sopenharmony_ci return objectCursor_; 995ccb8f90Sopenharmony_ci} 1005ccb8f90Sopenharmony_ci 1015ccb8f90Sopenharmony_cisize_t Parcel::GetDataCapacity() const 1025ccb8f90Sopenharmony_ci{ 1035ccb8f90Sopenharmony_ci return dataCapacity_; 1045ccb8f90Sopenharmony_ci} 1055ccb8f90Sopenharmony_ci 1065ccb8f90Sopenharmony_cibool Parcel::SetMaxCapacity(size_t maxCapacity) 1075ccb8f90Sopenharmony_ci{ 1085ccb8f90Sopenharmony_ci (void)maxCapacity; 1095ccb8f90Sopenharmony_ci return false; 1105ccb8f90Sopenharmony_ci} 1115ccb8f90Sopenharmony_ci 1125ccb8f90Sopenharmony_cibool Parcel::SetAllocator(Allocator* allocator) 1135ccb8f90Sopenharmony_ci{ 1145ccb8f90Sopenharmony_ci (void)allocator; 1155ccb8f90Sopenharmony_ci return false; 1165ccb8f90Sopenharmony_ci} 1175ccb8f90Sopenharmony_ci 1185ccb8f90Sopenharmony_cibool Parcel::CheckOffsets() 1195ccb8f90Sopenharmony_ci{ 1205ccb8f90Sopenharmony_ci return false; 1215ccb8f90Sopenharmony_ci} 1225ccb8f90Sopenharmony_ci 1235ccb8f90Sopenharmony_civoid Parcel::InjectOffsets(binder_size_t offsets, size_t offsetSize) 1245ccb8f90Sopenharmony_ci{ 1255ccb8f90Sopenharmony_ci (void)offsets; 1265ccb8f90Sopenharmony_ci (void)offsetSize; 1275ccb8f90Sopenharmony_ci} 1285ccb8f90Sopenharmony_ci 1295ccb8f90Sopenharmony_civoid Parcel::FlushBuffer() 1305ccb8f90Sopenharmony_ci{ 1315ccb8f90Sopenharmony_ci if (allocator_ == nullptr) { 1325ccb8f90Sopenharmony_ci return; 1335ccb8f90Sopenharmony_ci } 1345ccb8f90Sopenharmony_ci 1355ccb8f90Sopenharmony_ci if (data_ != nullptr) { 1365ccb8f90Sopenharmony_ci allocator_->Dealloc(data_); 1375ccb8f90Sopenharmony_ci dataSize_ = 0; 1385ccb8f90Sopenharmony_ci writeCursor_ = 0; 1395ccb8f90Sopenharmony_ci readCursor_ = 0; 1405ccb8f90Sopenharmony_ci dataCapacity_ = 0; 1415ccb8f90Sopenharmony_ci data_ = nullptr; 1425ccb8f90Sopenharmony_ci } 1435ccb8f90Sopenharmony_ci 1445ccb8f90Sopenharmony_ci if (objectOffsets_) { 1455ccb8f90Sopenharmony_ci objectHolder_.clear(); 1465ccb8f90Sopenharmony_ci free(objectOffsets_); 1475ccb8f90Sopenharmony_ci objectCursor_ = 0; 1485ccb8f90Sopenharmony_ci objectOffsets_ = nullptr; 1495ccb8f90Sopenharmony_ci objectsCapacity_ = 0; 1505ccb8f90Sopenharmony_ci } 1515ccb8f90Sopenharmony_ci} 1525ccb8f90Sopenharmony_ci 1535ccb8f90Sopenharmony_cibool Parcel::SetDataCapacity(size_t newCapacity) 1545ccb8f90Sopenharmony_ci{ 1555ccb8f90Sopenharmony_ci (void)newCapacity; 1565ccb8f90Sopenharmony_ci return false; 1575ccb8f90Sopenharmony_ci} 1585ccb8f90Sopenharmony_ci 1595ccb8f90Sopenharmony_cibool Parcel::SetDataSize(size_t dataSize) 1605ccb8f90Sopenharmony_ci{ 1615ccb8f90Sopenharmony_ci (void)dataSize; 1625ccb8f90Sopenharmony_ci return false; 1635ccb8f90Sopenharmony_ci} 1645ccb8f90Sopenharmony_ci 1655ccb8f90Sopenharmony_cibool Parcel::WriteDataBytes(const void* data, size_t size) 1665ccb8f90Sopenharmony_ci{ 1675ccb8f90Sopenharmony_ci (void)data; 1685ccb8f90Sopenharmony_ci (void)size; 1695ccb8f90Sopenharmony_ci return false; 1705ccb8f90Sopenharmony_ci} 1715ccb8f90Sopenharmony_ci 1725ccb8f90Sopenharmony_civoid Parcel::WritePadBytes(size_t padSize) 1735ccb8f90Sopenharmony_ci{ 1745ccb8f90Sopenharmony_ci (void)padSize; 1755ccb8f90Sopenharmony_ci} 1765ccb8f90Sopenharmony_ci 1775ccb8f90Sopenharmony_cibool Parcel::WriteBuffer(const void* data, size_t size) 1785ccb8f90Sopenharmony_ci{ 1795ccb8f90Sopenharmony_ci (void)data; 1805ccb8f90Sopenharmony_ci (void)size; 1815ccb8f90Sopenharmony_ci return false; 1825ccb8f90Sopenharmony_ci} 1835ccb8f90Sopenharmony_ci 1845ccb8f90Sopenharmony_cibool Parcel::WriteBufferAddTerminator(const void* data, size_t size, size_t typeSize) 1855ccb8f90Sopenharmony_ci{ 1865ccb8f90Sopenharmony_ci (void)data; 1875ccb8f90Sopenharmony_ci (void)size; 1885ccb8f90Sopenharmony_ci (void)typeSize; 1895ccb8f90Sopenharmony_ci return false; 1905ccb8f90Sopenharmony_ci} 1915ccb8f90Sopenharmony_ci 1925ccb8f90Sopenharmony_cibool Parcel::WriteUnpadBuffer(const void* data, size_t size) 1935ccb8f90Sopenharmony_ci{ 1945ccb8f90Sopenharmony_ci return WriteBuffer(data, size); 1955ccb8f90Sopenharmony_ci} 1965ccb8f90Sopenharmony_ci 1975ccb8f90Sopenharmony_citemplate <typename T> 1985ccb8f90Sopenharmony_cibool Parcel::Write(T value) 1995ccb8f90Sopenharmony_ci{ 2005ccb8f90Sopenharmony_ci (void)value; 2015ccb8f90Sopenharmony_ci return false; 2025ccb8f90Sopenharmony_ci} 2035ccb8f90Sopenharmony_ci 2045ccb8f90Sopenharmony_cibool Parcel::WriteBool(bool value) 2055ccb8f90Sopenharmony_ci{ 2065ccb8f90Sopenharmony_ci return Write<int32_t>(static_cast<int32_t>(value)); 2075ccb8f90Sopenharmony_ci} 2085ccb8f90Sopenharmony_ci 2095ccb8f90Sopenharmony_cibool Parcel::WriteBoolUnaligned(bool value) 2105ccb8f90Sopenharmony_ci{ 2115ccb8f90Sopenharmony_ci return Write<bool>(value); 2125ccb8f90Sopenharmony_ci} 2135ccb8f90Sopenharmony_ci 2145ccb8f90Sopenharmony_cibool Parcel::WriteInt8(int8_t value) 2155ccb8f90Sopenharmony_ci{ 2165ccb8f90Sopenharmony_ci return Write<int32_t>(static_cast<int32_t>(value)); 2175ccb8f90Sopenharmony_ci} 2185ccb8f90Sopenharmony_ci 2195ccb8f90Sopenharmony_cibool Parcel::WriteInt8Unaligned(int8_t value) 2205ccb8f90Sopenharmony_ci{ 2215ccb8f90Sopenharmony_ci return Write<int8_t>(value); 2225ccb8f90Sopenharmony_ci} 2235ccb8f90Sopenharmony_ci 2245ccb8f90Sopenharmony_cibool Parcel::WriteInt16(int16_t value) 2255ccb8f90Sopenharmony_ci{ 2265ccb8f90Sopenharmony_ci return Write<int32_t>(static_cast<int32_t>(value)); 2275ccb8f90Sopenharmony_ci} 2285ccb8f90Sopenharmony_ci 2295ccb8f90Sopenharmony_cibool Parcel::WriteInt16Unaligned(int16_t value) 2305ccb8f90Sopenharmony_ci{ 2315ccb8f90Sopenharmony_ci return Write<int16_t>(value); 2325ccb8f90Sopenharmony_ci} 2335ccb8f90Sopenharmony_ci 2345ccb8f90Sopenharmony_cibool Parcel::WriteInt32(int32_t value) 2355ccb8f90Sopenharmony_ci{ 2365ccb8f90Sopenharmony_ci return Write<int32_t>(value); 2375ccb8f90Sopenharmony_ci} 2385ccb8f90Sopenharmony_ci 2395ccb8f90Sopenharmony_cibool Parcel::WriteInt64(int64_t value) 2405ccb8f90Sopenharmony_ci{ 2415ccb8f90Sopenharmony_ci return Write<int64_t>(value); 2425ccb8f90Sopenharmony_ci} 2435ccb8f90Sopenharmony_ci 2445ccb8f90Sopenharmony_cibool Parcel::WriteUint8(uint8_t value) 2455ccb8f90Sopenharmony_ci{ 2465ccb8f90Sopenharmony_ci return Write<uint32_t>(static_cast<uint32_t>(value)); 2475ccb8f90Sopenharmony_ci} 2485ccb8f90Sopenharmony_ci 2495ccb8f90Sopenharmony_cibool Parcel::WriteUint8Unaligned(uint8_t value) 2505ccb8f90Sopenharmony_ci{ 2515ccb8f90Sopenharmony_ci return Write<uint8_t>(value); 2525ccb8f90Sopenharmony_ci} 2535ccb8f90Sopenharmony_ci 2545ccb8f90Sopenharmony_cibool Parcel::WriteUint16(uint16_t value) 2555ccb8f90Sopenharmony_ci{ 2565ccb8f90Sopenharmony_ci return Write<uint32_t>(static_cast<uint32_t>(value)); 2575ccb8f90Sopenharmony_ci} 2585ccb8f90Sopenharmony_ci 2595ccb8f90Sopenharmony_cibool Parcel::WriteUint16Unaligned(uint16_t value) 2605ccb8f90Sopenharmony_ci{ 2615ccb8f90Sopenharmony_ci return Write<uint16_t>(value); 2625ccb8f90Sopenharmony_ci} 2635ccb8f90Sopenharmony_ci 2645ccb8f90Sopenharmony_cibool Parcel::WriteUint32(uint32_t value) 2655ccb8f90Sopenharmony_ci{ 2665ccb8f90Sopenharmony_ci return Write<uint32_t>(value); 2675ccb8f90Sopenharmony_ci} 2685ccb8f90Sopenharmony_ci 2695ccb8f90Sopenharmony_cibool Parcel::WriteUint64(uint64_t value) 2705ccb8f90Sopenharmony_ci{ 2715ccb8f90Sopenharmony_ci return Write<uint64_t>(value); 2725ccb8f90Sopenharmony_ci} 2735ccb8f90Sopenharmony_ci 2745ccb8f90Sopenharmony_cibool Parcel::WriteFloat(float value) 2755ccb8f90Sopenharmony_ci{ 2765ccb8f90Sopenharmony_ci return Write<float>(value); 2775ccb8f90Sopenharmony_ci} 2785ccb8f90Sopenharmony_ci 2795ccb8f90Sopenharmony_cibool Parcel::WriteDouble(double value) 2805ccb8f90Sopenharmony_ci{ 2815ccb8f90Sopenharmony_ci return Write<double>(value); 2825ccb8f90Sopenharmony_ci} 2835ccb8f90Sopenharmony_ci 2845ccb8f90Sopenharmony_cibool Parcel::WritePointer(uintptr_t value) 2855ccb8f90Sopenharmony_ci{ 2865ccb8f90Sopenharmony_ci return Write<binder_uintptr_t>(value); 2875ccb8f90Sopenharmony_ci} 2885ccb8f90Sopenharmony_ci 2895ccb8f90Sopenharmony_cibool Parcel::WriteCString(const char* value) 2905ccb8f90Sopenharmony_ci{ 2915ccb8f90Sopenharmony_ci (void)value; 2925ccb8f90Sopenharmony_ci return false; 2935ccb8f90Sopenharmony_ci} 2945ccb8f90Sopenharmony_ci 2955ccb8f90Sopenharmony_cibool Parcel::WriteString(const std::string& value) 2965ccb8f90Sopenharmony_ci{ 2975ccb8f90Sopenharmony_ci (void)value; 2985ccb8f90Sopenharmony_ci return false; 2995ccb8f90Sopenharmony_ci} 3005ccb8f90Sopenharmony_ci 3015ccb8f90Sopenharmony_cibool Parcel::WriteString16(const std::u16string& value) 3025ccb8f90Sopenharmony_ci{ 3035ccb8f90Sopenharmony_ci (void)value; 3045ccb8f90Sopenharmony_ci return false; 3055ccb8f90Sopenharmony_ci} 3065ccb8f90Sopenharmony_ci 3075ccb8f90Sopenharmony_cibool Parcel::WriteString16WithLength(const char16_t* value, size_t len) 3085ccb8f90Sopenharmony_ci{ 3095ccb8f90Sopenharmony_ci (void)value; 3105ccb8f90Sopenharmony_ci (void)len; 3115ccb8f90Sopenharmony_ci return false; 3125ccb8f90Sopenharmony_ci} 3135ccb8f90Sopenharmony_ci 3145ccb8f90Sopenharmony_cibool Parcel::WriteString8WithLength(const char* value, size_t len) 3155ccb8f90Sopenharmony_ci{ 3165ccb8f90Sopenharmony_ci (void)value; 3175ccb8f90Sopenharmony_ci (void)len; 3185ccb8f90Sopenharmony_ci return false; 3195ccb8f90Sopenharmony_ci} 3205ccb8f90Sopenharmony_ci 3215ccb8f90Sopenharmony_cibool Parcel::EnsureObjectsCapacity() 3225ccb8f90Sopenharmony_ci{ 3235ccb8f90Sopenharmony_ci return false; 3245ccb8f90Sopenharmony_ci} 3255ccb8f90Sopenharmony_ci 3265ccb8f90Sopenharmony_cibool Parcel::WriteObjectOffset(binder_size_t offset) 3275ccb8f90Sopenharmony_ci{ 3285ccb8f90Sopenharmony_ci (void)offset; 3295ccb8f90Sopenharmony_ci return false; 3305ccb8f90Sopenharmony_ci} 3315ccb8f90Sopenharmony_ci 3325ccb8f90Sopenharmony_cibool Parcel::WriteRemoteObject(const Parcelable* object) 3335ccb8f90Sopenharmony_ci{ 3345ccb8f90Sopenharmony_ci (void)object; 3355ccb8f90Sopenharmony_ci return false; 3365ccb8f90Sopenharmony_ci} 3375ccb8f90Sopenharmony_ci 3385ccb8f90Sopenharmony_cibool Parcel::WriteParcelable(const Parcelable* object) 3395ccb8f90Sopenharmony_ci{ 3405ccb8f90Sopenharmony_ci (void)object; 3415ccb8f90Sopenharmony_ci return false; 3425ccb8f90Sopenharmony_ci} 3435ccb8f90Sopenharmony_ci 3445ccb8f90Sopenharmony_cibool Parcel::WriteStrongParcelable(const sptr<Parcelable>& object) 3455ccb8f90Sopenharmony_ci{ 3465ccb8f90Sopenharmony_ci (void)object; 3475ccb8f90Sopenharmony_ci return false; 3485ccb8f90Sopenharmony_ci} 3495ccb8f90Sopenharmony_ci 3505ccb8f90Sopenharmony_citemplate <typename T> 3515ccb8f90Sopenharmony_cibool Parcel::Read(T& value) 3525ccb8f90Sopenharmony_ci{ 3535ccb8f90Sopenharmony_ci (void)value; 3545ccb8f90Sopenharmony_ci return false; 3555ccb8f90Sopenharmony_ci} 3565ccb8f90Sopenharmony_ci 3575ccb8f90Sopenharmony_citemplate <typename T> 3585ccb8f90Sopenharmony_ciT Parcel::Read() 3595ccb8f90Sopenharmony_ci{ 3605ccb8f90Sopenharmony_ci return 0; 3615ccb8f90Sopenharmony_ci} 3625ccb8f90Sopenharmony_ci 3635ccb8f90Sopenharmony_cibool Parcel::ParseFrom(uintptr_t data, size_t size) 3645ccb8f90Sopenharmony_ci{ 3655ccb8f90Sopenharmony_ci (void)data; 3665ccb8f90Sopenharmony_ci (void)size; 3675ccb8f90Sopenharmony_ci return false; 3685ccb8f90Sopenharmony_ci} 3695ccb8f90Sopenharmony_ci 3705ccb8f90Sopenharmony_ciconst uint8_t* Parcel::ReadBuffer(size_t length) 3715ccb8f90Sopenharmony_ci{ 3725ccb8f90Sopenharmony_ci (void)length; 3735ccb8f90Sopenharmony_ci return nullptr; 3745ccb8f90Sopenharmony_ci} 3755ccb8f90Sopenharmony_ci 3765ccb8f90Sopenharmony_ciconst uint8_t* Parcel::ReadUnpadBuffer(size_t length) 3775ccb8f90Sopenharmony_ci{ 3785ccb8f90Sopenharmony_ci (void)length; 3795ccb8f90Sopenharmony_ci return nullptr; 3805ccb8f90Sopenharmony_ci} 3815ccb8f90Sopenharmony_ci 3825ccb8f90Sopenharmony_civoid Parcel::SkipBytes(size_t bytes) 3835ccb8f90Sopenharmony_ci{ 3845ccb8f90Sopenharmony_ci (void)bytes; 3855ccb8f90Sopenharmony_ci} 3865ccb8f90Sopenharmony_ci 3875ccb8f90Sopenharmony_cisize_t Parcel::GetReadPosition() 3885ccb8f90Sopenharmony_ci{ 3895ccb8f90Sopenharmony_ci return readCursor_; 3905ccb8f90Sopenharmony_ci} 3915ccb8f90Sopenharmony_ci 3925ccb8f90Sopenharmony_cibool Parcel::RewindRead(size_t newPosition) 3935ccb8f90Sopenharmony_ci{ 3945ccb8f90Sopenharmony_ci (void)newPosition; 3955ccb8f90Sopenharmony_ci return false; 3965ccb8f90Sopenharmony_ci} 3975ccb8f90Sopenharmony_ci 3985ccb8f90Sopenharmony_cisize_t Parcel::GetWritePosition() 3995ccb8f90Sopenharmony_ci{ 4005ccb8f90Sopenharmony_ci return writeCursor_; 4015ccb8f90Sopenharmony_ci} 4025ccb8f90Sopenharmony_ci 4035ccb8f90Sopenharmony_cibool Parcel::RewindWrite(size_t newPosition) 4045ccb8f90Sopenharmony_ci{ 4055ccb8f90Sopenharmony_ci (void)newPosition; 4065ccb8f90Sopenharmony_ci return false; 4075ccb8f90Sopenharmony_ci} 4085ccb8f90Sopenharmony_ci 4095ccb8f90Sopenharmony_cibool Parcel::ReadBool() 4105ccb8f90Sopenharmony_ci{ 4115ccb8f90Sopenharmony_ci int32_t temp = Read<int32_t>(); 4125ccb8f90Sopenharmony_ci return (temp != 0); 4135ccb8f90Sopenharmony_ci} 4145ccb8f90Sopenharmony_ci 4155ccb8f90Sopenharmony_cibool Parcel::ReadBoolUnaligned() 4165ccb8f90Sopenharmony_ci{ 4175ccb8f90Sopenharmony_ci return Read<bool>(); 4185ccb8f90Sopenharmony_ci} 4195ccb8f90Sopenharmony_ci 4205ccb8f90Sopenharmony_ciint8_t Parcel::ReadInt8() 4215ccb8f90Sopenharmony_ci{ 4225ccb8f90Sopenharmony_ci int32_t temp = Read<int32_t>(); 4235ccb8f90Sopenharmony_ci return static_cast<int8_t>(temp); 4245ccb8f90Sopenharmony_ci} 4255ccb8f90Sopenharmony_ci 4265ccb8f90Sopenharmony_ciint16_t Parcel::ReadInt16() 4275ccb8f90Sopenharmony_ci{ 4285ccb8f90Sopenharmony_ci int32_t temp = Read<int32_t>(); 4295ccb8f90Sopenharmony_ci return static_cast<int16_t>(temp); 4305ccb8f90Sopenharmony_ci} 4315ccb8f90Sopenharmony_ci 4325ccb8f90Sopenharmony_ciint32_t Parcel::ReadInt32() 4335ccb8f90Sopenharmony_ci{ 4345ccb8f90Sopenharmony_ci return Read<int32_t>(); 4355ccb8f90Sopenharmony_ci} 4365ccb8f90Sopenharmony_ci 4375ccb8f90Sopenharmony_ciint64_t Parcel::ReadInt64() 4385ccb8f90Sopenharmony_ci{ 4395ccb8f90Sopenharmony_ci return Read<int64_t>(); 4405ccb8f90Sopenharmony_ci} 4415ccb8f90Sopenharmony_ci 4425ccb8f90Sopenharmony_ciuint8_t Parcel::ReadUint8() 4435ccb8f90Sopenharmony_ci{ 4445ccb8f90Sopenharmony_ci uint32_t temp = Read<uint32_t>(); 4455ccb8f90Sopenharmony_ci return static_cast<uint8_t>(temp); 4465ccb8f90Sopenharmony_ci} 4475ccb8f90Sopenharmony_ci 4485ccb8f90Sopenharmony_ciuint16_t Parcel::ReadUint16() 4495ccb8f90Sopenharmony_ci{ 4505ccb8f90Sopenharmony_ci uint32_t temp = Read<uint32_t>(); 4515ccb8f90Sopenharmony_ci return static_cast<uint16_t>(temp); 4525ccb8f90Sopenharmony_ci} 4535ccb8f90Sopenharmony_ci 4545ccb8f90Sopenharmony_ciuint32_t Parcel::ReadUint32() 4555ccb8f90Sopenharmony_ci{ 4565ccb8f90Sopenharmony_ci return Read<uint32_t>(); 4575ccb8f90Sopenharmony_ci} 4585ccb8f90Sopenharmony_ci 4595ccb8f90Sopenharmony_ciuint64_t Parcel::ReadUint64() 4605ccb8f90Sopenharmony_ci{ 4615ccb8f90Sopenharmony_ci return Read<uint64_t>(); 4625ccb8f90Sopenharmony_ci} 4635ccb8f90Sopenharmony_ci 4645ccb8f90Sopenharmony_cifloat Parcel::ReadFloat() 4655ccb8f90Sopenharmony_ci{ 4665ccb8f90Sopenharmony_ci return Read<float>(); 4675ccb8f90Sopenharmony_ci} 4685ccb8f90Sopenharmony_ci 4695ccb8f90Sopenharmony_cidouble Parcel::ReadDouble() 4705ccb8f90Sopenharmony_ci{ 4715ccb8f90Sopenharmony_ci return Read<double>(); 4725ccb8f90Sopenharmony_ci} 4735ccb8f90Sopenharmony_ci 4745ccb8f90Sopenharmony_citemplate <typename T> 4755ccb8f90Sopenharmony_cibool Parcel::ReadPadded(T& value) 4765ccb8f90Sopenharmony_ci{ 4775ccb8f90Sopenharmony_ci (void)value; 4785ccb8f90Sopenharmony_ci return false; 4795ccb8f90Sopenharmony_ci} 4805ccb8f90Sopenharmony_ci 4815ccb8f90Sopenharmony_cibool Parcel::ReadBool(bool& value) 4825ccb8f90Sopenharmony_ci{ 4835ccb8f90Sopenharmony_ci return ReadPadded<bool>(value); 4845ccb8f90Sopenharmony_ci} 4855ccb8f90Sopenharmony_ci 4865ccb8f90Sopenharmony_cibool Parcel::ReadInt8(int8_t& value) 4875ccb8f90Sopenharmony_ci{ 4885ccb8f90Sopenharmony_ci return ReadPadded<int8_t>(value); 4895ccb8f90Sopenharmony_ci} 4905ccb8f90Sopenharmony_ci 4915ccb8f90Sopenharmony_cibool Parcel::ReadInt8Unaligned(int8_t& value) 4925ccb8f90Sopenharmony_ci{ 4935ccb8f90Sopenharmony_ci return Read<int8_t>(value); 4945ccb8f90Sopenharmony_ci} 4955ccb8f90Sopenharmony_ci 4965ccb8f90Sopenharmony_cibool Parcel::ReadInt16(int16_t& value) 4975ccb8f90Sopenharmony_ci{ 4985ccb8f90Sopenharmony_ci return ReadPadded<int16_t>(value); 4995ccb8f90Sopenharmony_ci} 5005ccb8f90Sopenharmony_ci 5015ccb8f90Sopenharmony_cibool Parcel::ReadInt16Unaligned(int16_t& value) 5025ccb8f90Sopenharmony_ci{ 5035ccb8f90Sopenharmony_ci return Read<int16_t>(value); 5045ccb8f90Sopenharmony_ci} 5055ccb8f90Sopenharmony_ci 5065ccb8f90Sopenharmony_cibool Parcel::ReadInt32(int32_t& value) 5075ccb8f90Sopenharmony_ci{ 5085ccb8f90Sopenharmony_ci return Read<int32_t>(value); 5095ccb8f90Sopenharmony_ci} 5105ccb8f90Sopenharmony_ci 5115ccb8f90Sopenharmony_cibool Parcel::ReadInt64(int64_t& value) 5125ccb8f90Sopenharmony_ci{ 5135ccb8f90Sopenharmony_ci return Read<int64_t>(value); 5145ccb8f90Sopenharmony_ci} 5155ccb8f90Sopenharmony_ci 5165ccb8f90Sopenharmony_cibool Parcel::ReadUint8(uint8_t& value) 5175ccb8f90Sopenharmony_ci{ 5185ccb8f90Sopenharmony_ci return ReadPadded<uint8_t>(value); 5195ccb8f90Sopenharmony_ci} 5205ccb8f90Sopenharmony_ci 5215ccb8f90Sopenharmony_cibool Parcel::ReadUint8Unaligned(uint8_t& value) 5225ccb8f90Sopenharmony_ci{ 5235ccb8f90Sopenharmony_ci return Read<uint8_t>(value); 5245ccb8f90Sopenharmony_ci} 5255ccb8f90Sopenharmony_ci 5265ccb8f90Sopenharmony_cibool Parcel::ReadUint16(uint16_t& value) 5275ccb8f90Sopenharmony_ci{ 5285ccb8f90Sopenharmony_ci return ReadPadded<uint16_t>(value); 5295ccb8f90Sopenharmony_ci} 5305ccb8f90Sopenharmony_ci 5315ccb8f90Sopenharmony_cibool Parcel::ReadUint16Unaligned(uint16_t& value) 5325ccb8f90Sopenharmony_ci{ 5335ccb8f90Sopenharmony_ci return Read<uint16_t>(value); 5345ccb8f90Sopenharmony_ci} 5355ccb8f90Sopenharmony_ci 5365ccb8f90Sopenharmony_cibool Parcel::ReadUint32(uint32_t& value) 5375ccb8f90Sopenharmony_ci{ 5385ccb8f90Sopenharmony_ci return Read<uint32_t>(value); 5395ccb8f90Sopenharmony_ci} 5405ccb8f90Sopenharmony_ci 5415ccb8f90Sopenharmony_cibool Parcel::ReadUint64(uint64_t& value) 5425ccb8f90Sopenharmony_ci{ 5435ccb8f90Sopenharmony_ci return Read<uint64_t>(value); 5445ccb8f90Sopenharmony_ci} 5455ccb8f90Sopenharmony_ci 5465ccb8f90Sopenharmony_cibool Parcel::ReadFloat(float& value) 5475ccb8f90Sopenharmony_ci{ 5485ccb8f90Sopenharmony_ci return Read<float>(value); 5495ccb8f90Sopenharmony_ci} 5505ccb8f90Sopenharmony_ci 5515ccb8f90Sopenharmony_cibool Parcel::ReadDouble(double& value) 5525ccb8f90Sopenharmony_ci{ 5535ccb8f90Sopenharmony_ci return Read<double>(value); 5545ccb8f90Sopenharmony_ci} 5555ccb8f90Sopenharmony_ci 5565ccb8f90Sopenharmony_ciuintptr_t Parcel::ReadPointer() 5575ccb8f90Sopenharmony_ci{ 5585ccb8f90Sopenharmony_ci return Read<binder_uintptr_t>(); 5595ccb8f90Sopenharmony_ci} 5605ccb8f90Sopenharmony_ci 5615ccb8f90Sopenharmony_ciconst char* Parcel::ReadCString() 5625ccb8f90Sopenharmony_ci{ 5635ccb8f90Sopenharmony_ci return nullptr; 5645ccb8f90Sopenharmony_ci} 5655ccb8f90Sopenharmony_ci 5665ccb8f90Sopenharmony_ciconst std::string Parcel::ReadString() 5675ccb8f90Sopenharmony_ci{ 5685ccb8f90Sopenharmony_ci return ""; 5695ccb8f90Sopenharmony_ci} 5705ccb8f90Sopenharmony_ci 5715ccb8f90Sopenharmony_cibool Parcel::ReadString(std::string& value) 5725ccb8f90Sopenharmony_ci{ 5735ccb8f90Sopenharmony_ci (void)value; 5745ccb8f90Sopenharmony_ci return false; 5755ccb8f90Sopenharmony_ci} 5765ccb8f90Sopenharmony_ci 5775ccb8f90Sopenharmony_ciconst std::u16string Parcel::ReadString16() 5785ccb8f90Sopenharmony_ci{ 5795ccb8f90Sopenharmony_ci#ifndef MOCK_READSTRING_DESCRIPTIR 5805ccb8f90Sopenharmony_ci std::u16string descriptor = u"ohos.powermgr.IDisplayPowerCallback"; 5815ccb8f90Sopenharmony_ci return descriptor; 5825ccb8f90Sopenharmony_ci#else 5835ccb8f90Sopenharmony_ci return std::u16string(); 5845ccb8f90Sopenharmony_ci#endif 5855ccb8f90Sopenharmony_ci} 5865ccb8f90Sopenharmony_ci 5875ccb8f90Sopenharmony_cibool Parcel::ReadString16(std::u16string& value) 5885ccb8f90Sopenharmony_ci{ 5895ccb8f90Sopenharmony_ci (void)value; 5905ccb8f90Sopenharmony_ci return false; 5915ccb8f90Sopenharmony_ci} 5925ccb8f90Sopenharmony_ci 5935ccb8f90Sopenharmony_ciconst std::u16string Parcel::ReadString16WithLength(int32_t& readLength) 5945ccb8f90Sopenharmony_ci{ 5955ccb8f90Sopenharmony_ci (void)readLength; 5965ccb8f90Sopenharmony_ci return std::u16string(); 5975ccb8f90Sopenharmony_ci} 5985ccb8f90Sopenharmony_ci 5995ccb8f90Sopenharmony_ciconst std::string Parcel::ReadString8WithLength(int32_t& readLength) 6005ccb8f90Sopenharmony_ci{ 6015ccb8f90Sopenharmony_ci (void)readLength; 6025ccb8f90Sopenharmony_ci return std::string(); 6035ccb8f90Sopenharmony_ci} 6045ccb8f90Sopenharmony_ci 6055ccb8f90Sopenharmony_citemplate <typename T1, typename T2> 6065ccb8f90Sopenharmony_cibool Parcel::WriteVector(const std::vector<T1>& val, bool (Parcel::*Write)(T2)) 6075ccb8f90Sopenharmony_ci{ 6085ccb8f90Sopenharmony_ci (void)val; 6095ccb8f90Sopenharmony_ci return false; 6105ccb8f90Sopenharmony_ci} 6115ccb8f90Sopenharmony_ci 6125ccb8f90Sopenharmony_cibool Parcel::WriteBoolVector(const std::vector<bool>& val) 6135ccb8f90Sopenharmony_ci{ 6145ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteBool); 6155ccb8f90Sopenharmony_ci} 6165ccb8f90Sopenharmony_ci 6175ccb8f90Sopenharmony_cibool Parcel::WriteInt8Vector(const std::vector<int8_t>& val) 6185ccb8f90Sopenharmony_ci{ 6195ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteInt8Unaligned); 6205ccb8f90Sopenharmony_ci} 6215ccb8f90Sopenharmony_ci 6225ccb8f90Sopenharmony_cibool Parcel::WriteInt16Vector(const std::vector<int16_t>& val) 6235ccb8f90Sopenharmony_ci{ 6245ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteInt16); 6255ccb8f90Sopenharmony_ci} 6265ccb8f90Sopenharmony_ci 6275ccb8f90Sopenharmony_cibool Parcel::WriteInt32Vector(const std::vector<int32_t>& val) 6285ccb8f90Sopenharmony_ci{ 6295ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteInt32); 6305ccb8f90Sopenharmony_ci} 6315ccb8f90Sopenharmony_ci 6325ccb8f90Sopenharmony_cibool Parcel::WriteInt64Vector(const std::vector<int64_t>& val) 6335ccb8f90Sopenharmony_ci{ 6345ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteInt64); 6355ccb8f90Sopenharmony_ci} 6365ccb8f90Sopenharmony_ci 6375ccb8f90Sopenharmony_cibool Parcel::WriteUInt8Vector(const std::vector<uint8_t>& val) 6385ccb8f90Sopenharmony_ci{ 6395ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteUint8Unaligned); 6405ccb8f90Sopenharmony_ci} 6415ccb8f90Sopenharmony_ci 6425ccb8f90Sopenharmony_cibool Parcel::WriteUInt16Vector(const std::vector<uint16_t>& val) 6435ccb8f90Sopenharmony_ci{ 6445ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteUint16Unaligned); 6455ccb8f90Sopenharmony_ci} 6465ccb8f90Sopenharmony_ci 6475ccb8f90Sopenharmony_cibool Parcel::WriteUInt32Vector(const std::vector<uint32_t>& val) 6485ccb8f90Sopenharmony_ci{ 6495ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteUint32); 6505ccb8f90Sopenharmony_ci} 6515ccb8f90Sopenharmony_ci 6525ccb8f90Sopenharmony_cibool Parcel::WriteUInt64Vector(const std::vector<uint64_t>& val) 6535ccb8f90Sopenharmony_ci{ 6545ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteUint64); 6555ccb8f90Sopenharmony_ci} 6565ccb8f90Sopenharmony_ci 6575ccb8f90Sopenharmony_cibool Parcel::WriteFloatVector(const std::vector<float>& val) 6585ccb8f90Sopenharmony_ci{ 6595ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteFloat); 6605ccb8f90Sopenharmony_ci} 6615ccb8f90Sopenharmony_ci 6625ccb8f90Sopenharmony_cibool Parcel::WriteDoubleVector(const std::vector<double>& val) 6635ccb8f90Sopenharmony_ci{ 6645ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteDouble); 6655ccb8f90Sopenharmony_ci} 6665ccb8f90Sopenharmony_ci 6675ccb8f90Sopenharmony_cibool Parcel::WriteStringVector(const std::vector<std::string>& val) 6685ccb8f90Sopenharmony_ci{ 6695ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteString); 6705ccb8f90Sopenharmony_ci} 6715ccb8f90Sopenharmony_ci 6725ccb8f90Sopenharmony_cibool Parcel::WriteString16Vector(const std::vector<std::u16string>& val) 6735ccb8f90Sopenharmony_ci{ 6745ccb8f90Sopenharmony_ci return WriteVector(val, &Parcel::WriteString16); 6755ccb8f90Sopenharmony_ci} 6765ccb8f90Sopenharmony_ci 6775ccb8f90Sopenharmony_citemplate <typename T> 6785ccb8f90Sopenharmony_cibool Parcel::ReadVector(std::vector<T>* val, bool (Parcel::*Read)(T&)) 6795ccb8f90Sopenharmony_ci{ 6805ccb8f90Sopenharmony_ci (void)val; 6815ccb8f90Sopenharmony_ci return false; 6825ccb8f90Sopenharmony_ci} 6835ccb8f90Sopenharmony_ci 6845ccb8f90Sopenharmony_cibool Parcel::ReadBoolVector(std::vector<bool>* val) 6855ccb8f90Sopenharmony_ci{ 6865ccb8f90Sopenharmony_ci (void)val; 6875ccb8f90Sopenharmony_ci return false; 6885ccb8f90Sopenharmony_ci} 6895ccb8f90Sopenharmony_ci 6905ccb8f90Sopenharmony_cibool Parcel::ReadInt8Vector(std::vector<int8_t>* val) 6915ccb8f90Sopenharmony_ci{ 6925ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadInt8Unaligned); 6935ccb8f90Sopenharmony_ci} 6945ccb8f90Sopenharmony_ci 6955ccb8f90Sopenharmony_cibool Parcel::ReadInt16Vector(std::vector<int16_t>* val) 6965ccb8f90Sopenharmony_ci{ 6975ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadInt16); 6985ccb8f90Sopenharmony_ci} 6995ccb8f90Sopenharmony_ci 7005ccb8f90Sopenharmony_cibool Parcel::ReadInt32Vector(std::vector<int32_t>* val) 7015ccb8f90Sopenharmony_ci{ 7025ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadInt32); 7035ccb8f90Sopenharmony_ci} 7045ccb8f90Sopenharmony_ci 7055ccb8f90Sopenharmony_cibool Parcel::ReadInt64Vector(std::vector<int64_t>* val) 7065ccb8f90Sopenharmony_ci{ 7075ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadInt64); 7085ccb8f90Sopenharmony_ci} 7095ccb8f90Sopenharmony_ci 7105ccb8f90Sopenharmony_cibool Parcel::ReadUInt8Vector(std::vector<uint8_t>* val) 7115ccb8f90Sopenharmony_ci{ 7125ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadUint8Unaligned); 7135ccb8f90Sopenharmony_ci} 7145ccb8f90Sopenharmony_ci 7155ccb8f90Sopenharmony_cibool Parcel::ReadUInt16Vector(std::vector<uint16_t>* val) 7165ccb8f90Sopenharmony_ci{ 7175ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadUint16Unaligned); 7185ccb8f90Sopenharmony_ci} 7195ccb8f90Sopenharmony_ci 7205ccb8f90Sopenharmony_cibool Parcel::ReadUInt32Vector(std::vector<uint32_t>* val) 7215ccb8f90Sopenharmony_ci{ 7225ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadUint32); 7235ccb8f90Sopenharmony_ci} 7245ccb8f90Sopenharmony_ci 7255ccb8f90Sopenharmony_cibool Parcel::ReadUInt64Vector(std::vector<uint64_t>* val) 7265ccb8f90Sopenharmony_ci{ 7275ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadUint64); 7285ccb8f90Sopenharmony_ci} 7295ccb8f90Sopenharmony_ci 7305ccb8f90Sopenharmony_cibool Parcel::ReadFloatVector(std::vector<float>* val) 7315ccb8f90Sopenharmony_ci{ 7325ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadFloat); 7335ccb8f90Sopenharmony_ci} 7345ccb8f90Sopenharmony_ci 7355ccb8f90Sopenharmony_cibool Parcel::ReadDoubleVector(std::vector<double>* val) 7365ccb8f90Sopenharmony_ci{ 7375ccb8f90Sopenharmony_ci return ReadVector(val, &Parcel::ReadDouble); 7385ccb8f90Sopenharmony_ci} 7395ccb8f90Sopenharmony_ci 7405ccb8f90Sopenharmony_cibool Parcel::ReadStringVector(std::vector<std::string>* val) 7415ccb8f90Sopenharmony_ci{ 7425ccb8f90Sopenharmony_ci (void)val; 7435ccb8f90Sopenharmony_ci return false; 7445ccb8f90Sopenharmony_ci} 7455ccb8f90Sopenharmony_ci 7465ccb8f90Sopenharmony_cibool Parcel::ReadString16Vector(std::vector<std::u16string>* val) 7475ccb8f90Sopenharmony_ci{ 7485ccb8f90Sopenharmony_ci (void)val; 7495ccb8f90Sopenharmony_ci return false; 7505ccb8f90Sopenharmony_ci} 7515ccb8f90Sopenharmony_ci} // namespace OHOS 752