137a09cd7Sopenharmony_ci/*
237a09cd7Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
337a09cd7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
437a09cd7Sopenharmony_ci * you may not use this file except in compliance with the License.
537a09cd7Sopenharmony_ci * You may obtain a copy of the License at
637a09cd7Sopenharmony_ci *
737a09cd7Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
837a09cd7Sopenharmony_ci *
937a09cd7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1037a09cd7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1137a09cd7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1237a09cd7Sopenharmony_ci * See the License for the specific language governing permissions and
1337a09cd7Sopenharmony_ci * limitations under the License.
1437a09cd7Sopenharmony_ci */
1537a09cd7Sopenharmony_ci
1637a09cd7Sopenharmony_ci#include "parcel.h"
1737a09cd7Sopenharmony_ci#include "thermal_temp_callback_stub.h"
1837a09cd7Sopenharmony_ci
1937a09cd7Sopenharmony_cinamespace OHOS {
2037a09cd7Sopenharmony_ci
2137a09cd7Sopenharmony_cistatic const size_t DEFAULT_CPACITY = 204800; // 200K
2237a09cd7Sopenharmony_ci
2337a09cd7Sopenharmony_ciParcelable::Parcelable() : Parcelable(false) {}
2437a09cd7Sopenharmony_ci
2537a09cd7Sopenharmony_ciParcelable::Parcelable(bool asRemote)
2637a09cd7Sopenharmony_ci{
2737a09cd7Sopenharmony_ci    asRemote_ = asRemote;
2837a09cd7Sopenharmony_ci    behavior_ = 0;
2937a09cd7Sopenharmony_ci}
3037a09cd7Sopenharmony_ci
3137a09cd7Sopenharmony_ciParcel::Parcel(Allocator* allocator)
3237a09cd7Sopenharmony_ci{
3337a09cd7Sopenharmony_ci    if (allocator != nullptr) {
3437a09cd7Sopenharmony_ci        allocator_ = allocator;
3537a09cd7Sopenharmony_ci    } else {
3637a09cd7Sopenharmony_ci        allocator_ = new DefaultAllocator();
3737a09cd7Sopenharmony_ci    }
3837a09cd7Sopenharmony_ci
3937a09cd7Sopenharmony_ci    writeCursor_ = 0;
4037a09cd7Sopenharmony_ci    readCursor_ = 0;
4137a09cd7Sopenharmony_ci
4237a09cd7Sopenharmony_ci    data_ = nullptr;
4337a09cd7Sopenharmony_ci    dataSize_ = 0;
4437a09cd7Sopenharmony_ci    dataCapacity_ = 0;
4537a09cd7Sopenharmony_ci
4637a09cd7Sopenharmony_ci    maxDataCapacity_ = DEFAULT_CPACITY;
4737a09cd7Sopenharmony_ci    objectOffsets_ = nullptr;
4837a09cd7Sopenharmony_ci    objectCursor_ = 0;
4937a09cd7Sopenharmony_ci    objectsCapacity_ = 0;
5037a09cd7Sopenharmony_ci}
5137a09cd7Sopenharmony_ci
5237a09cd7Sopenharmony_ciParcel::Parcel() : Parcel(new DefaultAllocator()) {}
5337a09cd7Sopenharmony_ci
5437a09cd7Sopenharmony_ciParcel::~Parcel()
5537a09cd7Sopenharmony_ci{
5637a09cd7Sopenharmony_ci    FlushBuffer();
5737a09cd7Sopenharmony_ci    delete allocator_;
5837a09cd7Sopenharmony_ci}
5937a09cd7Sopenharmony_ci
6037a09cd7Sopenharmony_cisize_t Parcel::GetWritableBytes() const
6137a09cd7Sopenharmony_ci{
6237a09cd7Sopenharmony_ci    return 0;
6337a09cd7Sopenharmony_ci}
6437a09cd7Sopenharmony_ci
6537a09cd7Sopenharmony_cisize_t Parcel::GetReadableBytes() const
6637a09cd7Sopenharmony_ci{
6737a09cd7Sopenharmony_ci    return 0;
6837a09cd7Sopenharmony_ci}
6937a09cd7Sopenharmony_ci
7037a09cd7Sopenharmony_cisize_t Parcel::CalcNewCapacity(size_t minNewCapacity)
7137a09cd7Sopenharmony_ci{
7237a09cd7Sopenharmony_ci    (void)minNewCapacity;
7337a09cd7Sopenharmony_ci    return 0;
7437a09cd7Sopenharmony_ci}
7537a09cd7Sopenharmony_ci
7637a09cd7Sopenharmony_cibool Parcel::EnsureWritableCapacity(size_t desireCapacity)
7737a09cd7Sopenharmony_ci{
7837a09cd7Sopenharmony_ci    (void)desireCapacity;
7937a09cd7Sopenharmony_ci    return false;
8037a09cd7Sopenharmony_ci}
8137a09cd7Sopenharmony_ci
8237a09cd7Sopenharmony_cisize_t Parcel::GetDataSize() const
8337a09cd7Sopenharmony_ci{
8437a09cd7Sopenharmony_ci    return dataSize_;
8537a09cd7Sopenharmony_ci}
8637a09cd7Sopenharmony_ci
8737a09cd7Sopenharmony_ciuintptr_t Parcel::GetData() const
8837a09cd7Sopenharmony_ci{
8937a09cd7Sopenharmony_ci    return reinterpret_cast<uintptr_t>(data_);
9037a09cd7Sopenharmony_ci}
9137a09cd7Sopenharmony_ci
9237a09cd7Sopenharmony_cibinder_size_t Parcel::GetObjectOffsets() const
9337a09cd7Sopenharmony_ci{
9437a09cd7Sopenharmony_ci    return reinterpret_cast<binder_size_t>(objectOffsets_);
9537a09cd7Sopenharmony_ci}
9637a09cd7Sopenharmony_ci
9737a09cd7Sopenharmony_cisize_t Parcel::GetOffsetsSize() const
9837a09cd7Sopenharmony_ci{
9937a09cd7Sopenharmony_ci    return objectCursor_;
10037a09cd7Sopenharmony_ci}
10137a09cd7Sopenharmony_ci
10237a09cd7Sopenharmony_cisize_t Parcel::GetDataCapacity() const
10337a09cd7Sopenharmony_ci{
10437a09cd7Sopenharmony_ci    return dataCapacity_;
10537a09cd7Sopenharmony_ci}
10637a09cd7Sopenharmony_ci
10737a09cd7Sopenharmony_cibool Parcel::SetMaxCapacity(size_t maxCapacity)
10837a09cd7Sopenharmony_ci{
10937a09cd7Sopenharmony_ci    (void)maxCapacity;
11037a09cd7Sopenharmony_ci    return false;
11137a09cd7Sopenharmony_ci}
11237a09cd7Sopenharmony_ci
11337a09cd7Sopenharmony_cibool Parcel::SetAllocator(Allocator* allocator)
11437a09cd7Sopenharmony_ci{
11537a09cd7Sopenharmony_ci    (void)allocator;
11637a09cd7Sopenharmony_ci    return false;
11737a09cd7Sopenharmony_ci}
11837a09cd7Sopenharmony_ci
11937a09cd7Sopenharmony_cibool Parcel::CheckOffsets()
12037a09cd7Sopenharmony_ci{
12137a09cd7Sopenharmony_ci    return false;
12237a09cd7Sopenharmony_ci}
12337a09cd7Sopenharmony_ci
12437a09cd7Sopenharmony_civoid Parcel::InjectOffsets(binder_size_t offsets, size_t offsetSize)
12537a09cd7Sopenharmony_ci{
12637a09cd7Sopenharmony_ci    (void)offsets;
12737a09cd7Sopenharmony_ci    (void)offsetSize;
12837a09cd7Sopenharmony_ci}
12937a09cd7Sopenharmony_ci
13037a09cd7Sopenharmony_civoid Parcel::FlushBuffer()
13137a09cd7Sopenharmony_ci{
13237a09cd7Sopenharmony_ci    if (allocator_ == nullptr) {
13337a09cd7Sopenharmony_ci        return;
13437a09cd7Sopenharmony_ci    }
13537a09cd7Sopenharmony_ci
13637a09cd7Sopenharmony_ci    if (data_ != nullptr) {
13737a09cd7Sopenharmony_ci        allocator_->Dealloc(data_);
13837a09cd7Sopenharmony_ci        dataSize_ = 0;
13937a09cd7Sopenharmony_ci        writeCursor_ = 0;
14037a09cd7Sopenharmony_ci        readCursor_ = 0;
14137a09cd7Sopenharmony_ci        dataCapacity_ = 0;
14237a09cd7Sopenharmony_ci        data_ = nullptr;
14337a09cd7Sopenharmony_ci    }
14437a09cd7Sopenharmony_ci
14537a09cd7Sopenharmony_ci    if (objectOffsets_) {
14637a09cd7Sopenharmony_ci        objectHolder_.clear();
14737a09cd7Sopenharmony_ci        free(objectOffsets_);
14837a09cd7Sopenharmony_ci        objectCursor_ = 0;
14937a09cd7Sopenharmony_ci        objectOffsets_ = nullptr;
15037a09cd7Sopenharmony_ci        objectsCapacity_ = 0;
15137a09cd7Sopenharmony_ci    }
15237a09cd7Sopenharmony_ci}
15337a09cd7Sopenharmony_ci
15437a09cd7Sopenharmony_cibool Parcel::SetDataCapacity(size_t newCapacity)
15537a09cd7Sopenharmony_ci{
15637a09cd7Sopenharmony_ci    (void)newCapacity;
15737a09cd7Sopenharmony_ci    return false;
15837a09cd7Sopenharmony_ci}
15937a09cd7Sopenharmony_ci
16037a09cd7Sopenharmony_cibool Parcel::SetDataSize(size_t dataSize)
16137a09cd7Sopenharmony_ci{
16237a09cd7Sopenharmony_ci    (void)dataSize;
16337a09cd7Sopenharmony_ci    return false;
16437a09cd7Sopenharmony_ci}
16537a09cd7Sopenharmony_ci
16637a09cd7Sopenharmony_cibool Parcel::WriteDataBytes(const void* data, size_t size)
16737a09cd7Sopenharmony_ci{
16837a09cd7Sopenharmony_ci    (void)data;
16937a09cd7Sopenharmony_ci    (void)size;
17037a09cd7Sopenharmony_ci    return false;
17137a09cd7Sopenharmony_ci}
17237a09cd7Sopenharmony_ci
17337a09cd7Sopenharmony_civoid Parcel::WritePadBytes(size_t padSize)
17437a09cd7Sopenharmony_ci{
17537a09cd7Sopenharmony_ci    (void)padSize;
17637a09cd7Sopenharmony_ci}
17737a09cd7Sopenharmony_ci
17837a09cd7Sopenharmony_cibool Parcel::WriteBuffer(const void* data, size_t size)
17937a09cd7Sopenharmony_ci{
18037a09cd7Sopenharmony_ci    (void)data;
18137a09cd7Sopenharmony_ci    (void)size;
18237a09cd7Sopenharmony_ci    return false;
18337a09cd7Sopenharmony_ci}
18437a09cd7Sopenharmony_ci
18537a09cd7Sopenharmony_cibool Parcel::WriteBufferAddTerminator(const void* data, size_t size, size_t typeSize)
18637a09cd7Sopenharmony_ci{
18737a09cd7Sopenharmony_ci    (void)data;
18837a09cd7Sopenharmony_ci    (void)size;
18937a09cd7Sopenharmony_ci    (void)typeSize;
19037a09cd7Sopenharmony_ci    return false;
19137a09cd7Sopenharmony_ci}
19237a09cd7Sopenharmony_ci
19337a09cd7Sopenharmony_cibool Parcel::WriteUnpadBuffer(const void* data, size_t size)
19437a09cd7Sopenharmony_ci{
19537a09cd7Sopenharmony_ci    return WriteBuffer(data, size);
19637a09cd7Sopenharmony_ci}
19737a09cd7Sopenharmony_ci
19837a09cd7Sopenharmony_citemplate <typename T>
19937a09cd7Sopenharmony_cibool Parcel::Write(T value)
20037a09cd7Sopenharmony_ci{
20137a09cd7Sopenharmony_ci    (void)value;
20237a09cd7Sopenharmony_ci#ifdef MOCK_WRITE_RETURN_TRUE
20337a09cd7Sopenharmony_ci    return true;
20437a09cd7Sopenharmony_ci#else
20537a09cd7Sopenharmony_ci    return false;
20637a09cd7Sopenharmony_ci#endif
20737a09cd7Sopenharmony_ci}
20837a09cd7Sopenharmony_ci
20937a09cd7Sopenharmony_cibool Parcel::WriteBool(bool value)
21037a09cd7Sopenharmony_ci{
21137a09cd7Sopenharmony_ci    return Write<int32_t>(static_cast<int32_t>(value));
21237a09cd7Sopenharmony_ci}
21337a09cd7Sopenharmony_ci
21437a09cd7Sopenharmony_cibool Parcel::WriteBoolUnaligned(bool value)
21537a09cd7Sopenharmony_ci{
21637a09cd7Sopenharmony_ci    return Write<bool>(value);
21737a09cd7Sopenharmony_ci}
21837a09cd7Sopenharmony_ci
21937a09cd7Sopenharmony_cibool Parcel::WriteInt8(int8_t value)
22037a09cd7Sopenharmony_ci{
22137a09cd7Sopenharmony_ci    return Write<int32_t>(static_cast<int32_t>(value));
22237a09cd7Sopenharmony_ci}
22337a09cd7Sopenharmony_ci
22437a09cd7Sopenharmony_cibool Parcel::WriteInt8Unaligned(int8_t value)
22537a09cd7Sopenharmony_ci{
22637a09cd7Sopenharmony_ci    return Write<int8_t>(value);
22737a09cd7Sopenharmony_ci}
22837a09cd7Sopenharmony_ci
22937a09cd7Sopenharmony_cibool Parcel::WriteInt16(int16_t value)
23037a09cd7Sopenharmony_ci{
23137a09cd7Sopenharmony_ci    return Write<int32_t>(static_cast<int32_t>(value));
23237a09cd7Sopenharmony_ci}
23337a09cd7Sopenharmony_ci
23437a09cd7Sopenharmony_cibool Parcel::WriteInt16Unaligned(int16_t value)
23537a09cd7Sopenharmony_ci{
23637a09cd7Sopenharmony_ci    return Write<int16_t>(value);
23737a09cd7Sopenharmony_ci}
23837a09cd7Sopenharmony_ci
23937a09cd7Sopenharmony_cibool Parcel::WriteInt32(int32_t value)
24037a09cd7Sopenharmony_ci{
24137a09cd7Sopenharmony_ci    return Write<int32_t>(value);
24237a09cd7Sopenharmony_ci}
24337a09cd7Sopenharmony_ci
24437a09cd7Sopenharmony_cibool Parcel::WriteInt64(int64_t value)
24537a09cd7Sopenharmony_ci{
24637a09cd7Sopenharmony_ci    return Write<int64_t>(value);
24737a09cd7Sopenharmony_ci}
24837a09cd7Sopenharmony_ci
24937a09cd7Sopenharmony_cibool Parcel::WriteUint8(uint8_t value)
25037a09cd7Sopenharmony_ci{
25137a09cd7Sopenharmony_ci    return Write<uint32_t>(static_cast<uint32_t>(value));
25237a09cd7Sopenharmony_ci}
25337a09cd7Sopenharmony_ci
25437a09cd7Sopenharmony_cibool Parcel::WriteUint8Unaligned(uint8_t value)
25537a09cd7Sopenharmony_ci{
25637a09cd7Sopenharmony_ci    return Write<uint8_t>(value);
25737a09cd7Sopenharmony_ci}
25837a09cd7Sopenharmony_ci
25937a09cd7Sopenharmony_cibool Parcel::WriteUint16(uint16_t value)
26037a09cd7Sopenharmony_ci{
26137a09cd7Sopenharmony_ci    return Write<uint32_t>(static_cast<uint32_t>(value));
26237a09cd7Sopenharmony_ci}
26337a09cd7Sopenharmony_ci
26437a09cd7Sopenharmony_cibool Parcel::WriteUint16Unaligned(uint16_t value)
26537a09cd7Sopenharmony_ci{
26637a09cd7Sopenharmony_ci    return Write<uint16_t>(value);
26737a09cd7Sopenharmony_ci}
26837a09cd7Sopenharmony_ci
26937a09cd7Sopenharmony_cibool Parcel::WriteUint32(uint32_t value)
27037a09cd7Sopenharmony_ci{
27137a09cd7Sopenharmony_ci    return Write<uint32_t>(value);
27237a09cd7Sopenharmony_ci}
27337a09cd7Sopenharmony_ci
27437a09cd7Sopenharmony_cibool Parcel::WriteUint64(uint64_t value)
27537a09cd7Sopenharmony_ci{
27637a09cd7Sopenharmony_ci    return Write<uint64_t>(value);
27737a09cd7Sopenharmony_ci}
27837a09cd7Sopenharmony_ci
27937a09cd7Sopenharmony_cibool Parcel::WriteFloat(float value)
28037a09cd7Sopenharmony_ci{
28137a09cd7Sopenharmony_ci    return Write<float>(value);
28237a09cd7Sopenharmony_ci}
28337a09cd7Sopenharmony_ci
28437a09cd7Sopenharmony_cibool Parcel::WriteDouble(double value)
28537a09cd7Sopenharmony_ci{
28637a09cd7Sopenharmony_ci    return Write<double>(value);
28737a09cd7Sopenharmony_ci}
28837a09cd7Sopenharmony_ci
28937a09cd7Sopenharmony_cibool Parcel::WritePointer(uintptr_t value)
29037a09cd7Sopenharmony_ci{
29137a09cd7Sopenharmony_ci    return Write<binder_uintptr_t>(value);
29237a09cd7Sopenharmony_ci}
29337a09cd7Sopenharmony_ci
29437a09cd7Sopenharmony_cibool Parcel::WriteCString(const char* value)
29537a09cd7Sopenharmony_ci{
29637a09cd7Sopenharmony_ci    (void)value;
29737a09cd7Sopenharmony_ci    return false;
29837a09cd7Sopenharmony_ci}
29937a09cd7Sopenharmony_ci
30037a09cd7Sopenharmony_cibool Parcel::WriteString(const std::string& value)
30137a09cd7Sopenharmony_ci{
30237a09cd7Sopenharmony_ci    (void)value;
30337a09cd7Sopenharmony_ci    return false;
30437a09cd7Sopenharmony_ci}
30537a09cd7Sopenharmony_ci
30637a09cd7Sopenharmony_cibool Parcel::WriteString16(const std::u16string& value)
30737a09cd7Sopenharmony_ci{
30837a09cd7Sopenharmony_ci    (void)value;
30937a09cd7Sopenharmony_ci    return false;
31037a09cd7Sopenharmony_ci}
31137a09cd7Sopenharmony_ci
31237a09cd7Sopenharmony_cibool Parcel::WriteString16WithLength(const char16_t* value, size_t len)
31337a09cd7Sopenharmony_ci{
31437a09cd7Sopenharmony_ci    (void)value;
31537a09cd7Sopenharmony_ci    (void)len;
31637a09cd7Sopenharmony_ci    return false;
31737a09cd7Sopenharmony_ci}
31837a09cd7Sopenharmony_ci
31937a09cd7Sopenharmony_cibool Parcel::WriteString8WithLength(const char* value, size_t len)
32037a09cd7Sopenharmony_ci{
32137a09cd7Sopenharmony_ci    (void)value;
32237a09cd7Sopenharmony_ci    (void)len;
32337a09cd7Sopenharmony_ci    return false;
32437a09cd7Sopenharmony_ci}
32537a09cd7Sopenharmony_ci
32637a09cd7Sopenharmony_cibool Parcel::EnsureObjectsCapacity()
32737a09cd7Sopenharmony_ci{
32837a09cd7Sopenharmony_ci    return false;
32937a09cd7Sopenharmony_ci}
33037a09cd7Sopenharmony_ci
33137a09cd7Sopenharmony_cibool Parcel::WriteObjectOffset(binder_size_t offset)
33237a09cd7Sopenharmony_ci{
33337a09cd7Sopenharmony_ci    (void)offset;
33437a09cd7Sopenharmony_ci    return false;
33537a09cd7Sopenharmony_ci}
33637a09cd7Sopenharmony_ci
33737a09cd7Sopenharmony_cibool Parcel::WriteRemoteObject(const Parcelable* object)
33837a09cd7Sopenharmony_ci{
33937a09cd7Sopenharmony_ci    (void)object;
34037a09cd7Sopenharmony_ci#ifdef MOCK_WRITE_REMOTE_OBJECT_RETURN_TRUE
34137a09cd7Sopenharmony_ci    return true;
34237a09cd7Sopenharmony_ci#else
34337a09cd7Sopenharmony_ci    return false;
34437a09cd7Sopenharmony_ci#endif
34537a09cd7Sopenharmony_ci}
34637a09cd7Sopenharmony_ci
34737a09cd7Sopenharmony_cibool Parcel::WriteParcelable(const Parcelable* object)
34837a09cd7Sopenharmony_ci{
34937a09cd7Sopenharmony_ci    (void)object;
35037a09cd7Sopenharmony_ci    return false;
35137a09cd7Sopenharmony_ci}
35237a09cd7Sopenharmony_ci
35337a09cd7Sopenharmony_cibool Parcel::WriteStrongParcelable(const sptr<Parcelable>& object)
35437a09cd7Sopenharmony_ci{
35537a09cd7Sopenharmony_ci    (void)object;
35637a09cd7Sopenharmony_ci    return false;
35737a09cd7Sopenharmony_ci}
35837a09cd7Sopenharmony_ci
35937a09cd7Sopenharmony_citemplate <typename T>
36037a09cd7Sopenharmony_cibool Parcel::Read(T& value)
36137a09cd7Sopenharmony_ci{
36237a09cd7Sopenharmony_ci    (void)value;
36337a09cd7Sopenharmony_ci    return false;
36437a09cd7Sopenharmony_ci}
36537a09cd7Sopenharmony_ci
36637a09cd7Sopenharmony_citemplate <typename T>
36737a09cd7Sopenharmony_ciT Parcel::Read()
36837a09cd7Sopenharmony_ci{
36937a09cd7Sopenharmony_ci#ifdef MOCK_READ_RETURN_ZERO
37037a09cd7Sopenharmony_ci    return 0;
37137a09cd7Sopenharmony_ci#else
37237a09cd7Sopenharmony_ci    return 1;
37337a09cd7Sopenharmony_ci#endif
37437a09cd7Sopenharmony_ci}
37537a09cd7Sopenharmony_ci
37637a09cd7Sopenharmony_cibool Parcel::ParseFrom(uintptr_t data, size_t size)
37737a09cd7Sopenharmony_ci{
37837a09cd7Sopenharmony_ci    (void)data;
37937a09cd7Sopenharmony_ci    (void)size;
38037a09cd7Sopenharmony_ci    return false;
38137a09cd7Sopenharmony_ci}
38237a09cd7Sopenharmony_ci
38337a09cd7Sopenharmony_ciconst uint8_t* Parcel::ReadBuffer(size_t length)
38437a09cd7Sopenharmony_ci{
38537a09cd7Sopenharmony_ci    (void)length;
38637a09cd7Sopenharmony_ci    return nullptr;
38737a09cd7Sopenharmony_ci}
38837a09cd7Sopenharmony_ci
38937a09cd7Sopenharmony_ciconst uint8_t* Parcel::ReadUnpadBuffer(size_t length)
39037a09cd7Sopenharmony_ci{
39137a09cd7Sopenharmony_ci    (void)length;
39237a09cd7Sopenharmony_ci    return nullptr;
39337a09cd7Sopenharmony_ci}
39437a09cd7Sopenharmony_ci
39537a09cd7Sopenharmony_civoid Parcel::SkipBytes(size_t bytes)
39637a09cd7Sopenharmony_ci{
39737a09cd7Sopenharmony_ci    (void)bytes;
39837a09cd7Sopenharmony_ci}
39937a09cd7Sopenharmony_ci
40037a09cd7Sopenharmony_cisize_t Parcel::GetReadPosition()
40137a09cd7Sopenharmony_ci{
40237a09cd7Sopenharmony_ci    return readCursor_;
40337a09cd7Sopenharmony_ci}
40437a09cd7Sopenharmony_ci
40537a09cd7Sopenharmony_cibool Parcel::RewindRead(size_t newPosition)
40637a09cd7Sopenharmony_ci{
40737a09cd7Sopenharmony_ci    (void)newPosition;
40837a09cd7Sopenharmony_ci    return false;
40937a09cd7Sopenharmony_ci}
41037a09cd7Sopenharmony_ci
41137a09cd7Sopenharmony_cisize_t Parcel::GetWritePosition()
41237a09cd7Sopenharmony_ci{
41337a09cd7Sopenharmony_ci    return writeCursor_;
41437a09cd7Sopenharmony_ci}
41537a09cd7Sopenharmony_ci
41637a09cd7Sopenharmony_cibool Parcel::RewindWrite(size_t newPosition)
41737a09cd7Sopenharmony_ci{
41837a09cd7Sopenharmony_ci    (void)newPosition;
41937a09cd7Sopenharmony_ci    return false;
42037a09cd7Sopenharmony_ci}
42137a09cd7Sopenharmony_ci
42237a09cd7Sopenharmony_cibool Parcel::ReadBool()
42337a09cd7Sopenharmony_ci{
42437a09cd7Sopenharmony_ci    int32_t temp = Read<int32_t>();
42537a09cd7Sopenharmony_ci    return (temp != 0);
42637a09cd7Sopenharmony_ci}
42737a09cd7Sopenharmony_ci
42837a09cd7Sopenharmony_cibool Parcel::ReadBoolUnaligned()
42937a09cd7Sopenharmony_ci{
43037a09cd7Sopenharmony_ci    return Read<bool>();
43137a09cd7Sopenharmony_ci}
43237a09cd7Sopenharmony_ci
43337a09cd7Sopenharmony_ciint8_t Parcel::ReadInt8()
43437a09cd7Sopenharmony_ci{
43537a09cd7Sopenharmony_ci    int32_t temp = Read<int32_t>();
43637a09cd7Sopenharmony_ci    return static_cast<int8_t>(temp);
43737a09cd7Sopenharmony_ci}
43837a09cd7Sopenharmony_ci
43937a09cd7Sopenharmony_ciint16_t Parcel::ReadInt16()
44037a09cd7Sopenharmony_ci{
44137a09cd7Sopenharmony_ci    int32_t temp = Read<int32_t>();
44237a09cd7Sopenharmony_ci    return static_cast<int16_t>(temp);
44337a09cd7Sopenharmony_ci}
44437a09cd7Sopenharmony_ci
44537a09cd7Sopenharmony_ciint32_t Parcel::ReadInt32()
44637a09cd7Sopenharmony_ci{
44737a09cd7Sopenharmony_ci    return Read<int32_t>();
44837a09cd7Sopenharmony_ci}
44937a09cd7Sopenharmony_ci
45037a09cd7Sopenharmony_ciint64_t Parcel::ReadInt64()
45137a09cd7Sopenharmony_ci{
45237a09cd7Sopenharmony_ci    return Read<int64_t>();
45337a09cd7Sopenharmony_ci}
45437a09cd7Sopenharmony_ci
45537a09cd7Sopenharmony_ciuint8_t Parcel::ReadUint8()
45637a09cd7Sopenharmony_ci{
45737a09cd7Sopenharmony_ci    uint32_t temp = Read<uint32_t>();
45837a09cd7Sopenharmony_ci    return static_cast<uint8_t>(temp);
45937a09cd7Sopenharmony_ci}
46037a09cd7Sopenharmony_ci
46137a09cd7Sopenharmony_ciuint16_t Parcel::ReadUint16()
46237a09cd7Sopenharmony_ci{
46337a09cd7Sopenharmony_ci    uint32_t temp = Read<uint32_t>();
46437a09cd7Sopenharmony_ci    return static_cast<uint16_t>(temp);
46537a09cd7Sopenharmony_ci}
46637a09cd7Sopenharmony_ci
46737a09cd7Sopenharmony_ciuint32_t Parcel::ReadUint32()
46837a09cd7Sopenharmony_ci{
46937a09cd7Sopenharmony_ci    return Read<uint32_t>();
47037a09cd7Sopenharmony_ci}
47137a09cd7Sopenharmony_ci
47237a09cd7Sopenharmony_ciuint64_t Parcel::ReadUint64()
47337a09cd7Sopenharmony_ci{
47437a09cd7Sopenharmony_ci    return Read<uint64_t>();
47537a09cd7Sopenharmony_ci}
47637a09cd7Sopenharmony_ci
47737a09cd7Sopenharmony_cifloat Parcel::ReadFloat()
47837a09cd7Sopenharmony_ci{
47937a09cd7Sopenharmony_ci    return Read<float>();
48037a09cd7Sopenharmony_ci}
48137a09cd7Sopenharmony_ci
48237a09cd7Sopenharmony_cidouble Parcel::ReadDouble()
48337a09cd7Sopenharmony_ci{
48437a09cd7Sopenharmony_ci    return Read<double>();
48537a09cd7Sopenharmony_ci}
48637a09cd7Sopenharmony_ci
48737a09cd7Sopenharmony_citemplate <typename T>
48837a09cd7Sopenharmony_cibool Parcel::ReadPadded(T& value)
48937a09cd7Sopenharmony_ci{
49037a09cd7Sopenharmony_ci    (void)value;
49137a09cd7Sopenharmony_ci    return false;
49237a09cd7Sopenharmony_ci}
49337a09cd7Sopenharmony_ci
49437a09cd7Sopenharmony_cibool Parcel::ReadBool(bool& value)
49537a09cd7Sopenharmony_ci{
49637a09cd7Sopenharmony_ci    return ReadPadded<bool>(value);
49737a09cd7Sopenharmony_ci}
49837a09cd7Sopenharmony_ci
49937a09cd7Sopenharmony_cibool Parcel::ReadInt8(int8_t& value)
50037a09cd7Sopenharmony_ci{
50137a09cd7Sopenharmony_ci    return ReadPadded<int8_t>(value);
50237a09cd7Sopenharmony_ci}
50337a09cd7Sopenharmony_ci
50437a09cd7Sopenharmony_cibool Parcel::ReadInt8Unaligned(int8_t& value)
50537a09cd7Sopenharmony_ci{
50637a09cd7Sopenharmony_ci    return Read<int8_t>(value);
50737a09cd7Sopenharmony_ci}
50837a09cd7Sopenharmony_ci
50937a09cd7Sopenharmony_cibool Parcel::ReadInt16(int16_t& value)
51037a09cd7Sopenharmony_ci{
51137a09cd7Sopenharmony_ci    return ReadPadded<int16_t>(value);
51237a09cd7Sopenharmony_ci}
51337a09cd7Sopenharmony_ci
51437a09cd7Sopenharmony_cibool Parcel::ReadInt16Unaligned(int16_t& value)
51537a09cd7Sopenharmony_ci{
51637a09cd7Sopenharmony_ci    return Read<int16_t>(value);
51737a09cd7Sopenharmony_ci}
51837a09cd7Sopenharmony_ci
51937a09cd7Sopenharmony_cibool Parcel::ReadInt32(int32_t& value)
52037a09cd7Sopenharmony_ci{
52137a09cd7Sopenharmony_ci    return Read<int32_t>(value);
52237a09cd7Sopenharmony_ci}
52337a09cd7Sopenharmony_ci
52437a09cd7Sopenharmony_cibool Parcel::ReadInt64(int64_t& value)
52537a09cd7Sopenharmony_ci{
52637a09cd7Sopenharmony_ci    return Read<int64_t>(value);
52737a09cd7Sopenharmony_ci}
52837a09cd7Sopenharmony_ci
52937a09cd7Sopenharmony_cibool Parcel::ReadUint8(uint8_t& value)
53037a09cd7Sopenharmony_ci{
53137a09cd7Sopenharmony_ci    return ReadPadded<uint8_t>(value);
53237a09cd7Sopenharmony_ci}
53337a09cd7Sopenharmony_ci
53437a09cd7Sopenharmony_cibool Parcel::ReadUint8Unaligned(uint8_t& value)
53537a09cd7Sopenharmony_ci{
53637a09cd7Sopenharmony_ci    return Read<uint8_t>(value);
53737a09cd7Sopenharmony_ci}
53837a09cd7Sopenharmony_ci
53937a09cd7Sopenharmony_cibool Parcel::ReadUint16(uint16_t& value)
54037a09cd7Sopenharmony_ci{
54137a09cd7Sopenharmony_ci    return ReadPadded<uint16_t>(value);
54237a09cd7Sopenharmony_ci}
54337a09cd7Sopenharmony_ci
54437a09cd7Sopenharmony_cibool Parcel::ReadUint16Unaligned(uint16_t& value)
54537a09cd7Sopenharmony_ci{
54637a09cd7Sopenharmony_ci    return Read<uint16_t>(value);
54737a09cd7Sopenharmony_ci}
54837a09cd7Sopenharmony_ci
54937a09cd7Sopenharmony_cibool Parcel::ReadUint32(uint32_t& value)
55037a09cd7Sopenharmony_ci{
55137a09cd7Sopenharmony_ci    return Read<uint32_t>(value);
55237a09cd7Sopenharmony_ci}
55337a09cd7Sopenharmony_ci
55437a09cd7Sopenharmony_cibool Parcel::ReadUint64(uint64_t& value)
55537a09cd7Sopenharmony_ci{
55637a09cd7Sopenharmony_ci    return Read<uint64_t>(value);
55737a09cd7Sopenharmony_ci}
55837a09cd7Sopenharmony_ci
55937a09cd7Sopenharmony_cibool Parcel::ReadFloat(float& value)
56037a09cd7Sopenharmony_ci{
56137a09cd7Sopenharmony_ci    return Read<float>(value);
56237a09cd7Sopenharmony_ci}
56337a09cd7Sopenharmony_ci
56437a09cd7Sopenharmony_cibool Parcel::ReadDouble(double& value)
56537a09cd7Sopenharmony_ci{
56637a09cd7Sopenharmony_ci    return Read<double>(value);
56737a09cd7Sopenharmony_ci}
56837a09cd7Sopenharmony_ci
56937a09cd7Sopenharmony_ciuintptr_t Parcel::ReadPointer()
57037a09cd7Sopenharmony_ci{
57137a09cd7Sopenharmony_ci    return Read<binder_uintptr_t>();
57237a09cd7Sopenharmony_ci}
57337a09cd7Sopenharmony_ci
57437a09cd7Sopenharmony_ciconst char* Parcel::ReadCString()
57537a09cd7Sopenharmony_ci{
57637a09cd7Sopenharmony_ci    return nullptr;
57737a09cd7Sopenharmony_ci}
57837a09cd7Sopenharmony_ci
57937a09cd7Sopenharmony_ciconst std::string Parcel::ReadString()
58037a09cd7Sopenharmony_ci{
58137a09cd7Sopenharmony_ci    return "";
58237a09cd7Sopenharmony_ci}
58337a09cd7Sopenharmony_ci
58437a09cd7Sopenharmony_cibool Parcel::ReadString(std::string& value)
58537a09cd7Sopenharmony_ci{
58637a09cd7Sopenharmony_ci    (void)value;
58737a09cd7Sopenharmony_ci#ifdef MOCK_READSTRING_RETURN_TRUE
58837a09cd7Sopenharmony_ci    return true;
58937a09cd7Sopenharmony_ci#else
59037a09cd7Sopenharmony_ci    return false;
59137a09cd7Sopenharmony_ci#endif
59237a09cd7Sopenharmony_ci}
59337a09cd7Sopenharmony_ci
59437a09cd7Sopenharmony_ciconst std::u16string Parcel::ReadString16()
59537a09cd7Sopenharmony_ci{
59637a09cd7Sopenharmony_ci#ifdef MOCK_READSTRING16_RETURN_NULL
59737a09cd7Sopenharmony_ci    return std::u16string();
59837a09cd7Sopenharmony_ci#else
59937a09cd7Sopenharmony_ci    return PowerMgr::ThermalTempCallbackStub::GetDescriptor();
60037a09cd7Sopenharmony_ci#endif
60137a09cd7Sopenharmony_ci}
60237a09cd7Sopenharmony_ci
60337a09cd7Sopenharmony_cibool Parcel::ReadString16(std::u16string& value)
60437a09cd7Sopenharmony_ci{
60537a09cd7Sopenharmony_ci    (void)value;
60637a09cd7Sopenharmony_ci    return false;
60737a09cd7Sopenharmony_ci}
60837a09cd7Sopenharmony_ci
60937a09cd7Sopenharmony_ciconst std::u16string Parcel::ReadString16WithLength(int32_t& readLength)
61037a09cd7Sopenharmony_ci{
61137a09cd7Sopenharmony_ci    (void)readLength;
61237a09cd7Sopenharmony_ci    return std::u16string();
61337a09cd7Sopenharmony_ci}
61437a09cd7Sopenharmony_ci
61537a09cd7Sopenharmony_ciconst std::string Parcel::ReadString8WithLength(int32_t& readLength)
61637a09cd7Sopenharmony_ci{
61737a09cd7Sopenharmony_ci    (void)readLength;
61837a09cd7Sopenharmony_ci    return std::string();
61937a09cd7Sopenharmony_ci}
62037a09cd7Sopenharmony_ci
62137a09cd7Sopenharmony_citemplate <typename T1, typename T2>
62237a09cd7Sopenharmony_cibool Parcel::WriteVector(const std::vector<T1>& val, bool (Parcel::*Write)(T2))
62337a09cd7Sopenharmony_ci{
62437a09cd7Sopenharmony_ci    (void)val;
62537a09cd7Sopenharmony_ci#ifdef MOCK_WRITEVECTOR_RETURN_FALSE
62637a09cd7Sopenharmony_ci    return false;
62737a09cd7Sopenharmony_ci#else
62837a09cd7Sopenharmony_ci    return true;
62937a09cd7Sopenharmony_ci#endif
63037a09cd7Sopenharmony_ci}
63137a09cd7Sopenharmony_ci
63237a09cd7Sopenharmony_cibool Parcel::WriteBoolVector(const std::vector<bool>& val)
63337a09cd7Sopenharmony_ci{
63437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteBool);
63537a09cd7Sopenharmony_ci}
63637a09cd7Sopenharmony_ci
63737a09cd7Sopenharmony_cibool Parcel::WriteInt8Vector(const std::vector<int8_t>& val)
63837a09cd7Sopenharmony_ci{
63937a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt8Unaligned);
64037a09cd7Sopenharmony_ci}
64137a09cd7Sopenharmony_ci
64237a09cd7Sopenharmony_cibool Parcel::WriteInt16Vector(const std::vector<int16_t>& val)
64337a09cd7Sopenharmony_ci{
64437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt16);
64537a09cd7Sopenharmony_ci}
64637a09cd7Sopenharmony_ci
64737a09cd7Sopenharmony_cibool Parcel::WriteInt32Vector(const std::vector<int32_t>& val)
64837a09cd7Sopenharmony_ci{
64937a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt32);
65037a09cd7Sopenharmony_ci}
65137a09cd7Sopenharmony_ci
65237a09cd7Sopenharmony_cibool Parcel::WriteInt64Vector(const std::vector<int64_t>& val)
65337a09cd7Sopenharmony_ci{
65437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt64);
65537a09cd7Sopenharmony_ci}
65637a09cd7Sopenharmony_ci
65737a09cd7Sopenharmony_cibool Parcel::WriteUInt8Vector(const std::vector<uint8_t>& val)
65837a09cd7Sopenharmony_ci{
65937a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint8Unaligned);
66037a09cd7Sopenharmony_ci}
66137a09cd7Sopenharmony_ci
66237a09cd7Sopenharmony_cibool Parcel::WriteUInt16Vector(const std::vector<uint16_t>& val)
66337a09cd7Sopenharmony_ci{
66437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint16Unaligned);
66537a09cd7Sopenharmony_ci}
66637a09cd7Sopenharmony_ci
66737a09cd7Sopenharmony_cibool Parcel::WriteUInt32Vector(const std::vector<uint32_t>& val)
66837a09cd7Sopenharmony_ci{
66937a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint32);
67037a09cd7Sopenharmony_ci}
67137a09cd7Sopenharmony_ci
67237a09cd7Sopenharmony_cibool Parcel::WriteUInt64Vector(const std::vector<uint64_t>& val)
67337a09cd7Sopenharmony_ci{
67437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint64);
67537a09cd7Sopenharmony_ci}
67637a09cd7Sopenharmony_ci
67737a09cd7Sopenharmony_cibool Parcel::WriteFloatVector(const std::vector<float>& val)
67837a09cd7Sopenharmony_ci{
67937a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteFloat);
68037a09cd7Sopenharmony_ci}
68137a09cd7Sopenharmony_ci
68237a09cd7Sopenharmony_cibool Parcel::WriteDoubleVector(const std::vector<double>& val)
68337a09cd7Sopenharmony_ci{
68437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteDouble);
68537a09cd7Sopenharmony_ci}
68637a09cd7Sopenharmony_ci
68737a09cd7Sopenharmony_cibool Parcel::WriteStringVector(const std::vector<std::string>& val)
68837a09cd7Sopenharmony_ci{
68937a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteString);
69037a09cd7Sopenharmony_ci}
69137a09cd7Sopenharmony_ci
69237a09cd7Sopenharmony_cibool Parcel::WriteString16Vector(const std::vector<std::u16string>& val)
69337a09cd7Sopenharmony_ci{
69437a09cd7Sopenharmony_ci    return WriteVector(val, &Parcel::WriteString16);
69537a09cd7Sopenharmony_ci}
69637a09cd7Sopenharmony_ci
69737a09cd7Sopenharmony_citemplate <typename T>
69837a09cd7Sopenharmony_cibool Parcel::ReadVector(std::vector<T>* val, bool (Parcel::*Read)(T&))
69937a09cd7Sopenharmony_ci{
70037a09cd7Sopenharmony_ci    (void)val;
70137a09cd7Sopenharmony_ci    return false;
70237a09cd7Sopenharmony_ci}
70337a09cd7Sopenharmony_ci
70437a09cd7Sopenharmony_cibool Parcel::ReadBoolVector(std::vector<bool>* val)
70537a09cd7Sopenharmony_ci{
70637a09cd7Sopenharmony_ci    (void)val;
70737a09cd7Sopenharmony_ci    return false;
70837a09cd7Sopenharmony_ci}
70937a09cd7Sopenharmony_ci
71037a09cd7Sopenharmony_cibool Parcel::ReadInt8Vector(std::vector<int8_t>* val)
71137a09cd7Sopenharmony_ci{
71237a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt8Unaligned);
71337a09cd7Sopenharmony_ci}
71437a09cd7Sopenharmony_ci
71537a09cd7Sopenharmony_cibool Parcel::ReadInt16Vector(std::vector<int16_t>* val)
71637a09cd7Sopenharmony_ci{
71737a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt16);
71837a09cd7Sopenharmony_ci}
71937a09cd7Sopenharmony_ci
72037a09cd7Sopenharmony_cibool Parcel::ReadInt32Vector(std::vector<int32_t>* val)
72137a09cd7Sopenharmony_ci{
72237a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt32);
72337a09cd7Sopenharmony_ci}
72437a09cd7Sopenharmony_ci
72537a09cd7Sopenharmony_cibool Parcel::ReadInt64Vector(std::vector<int64_t>* val)
72637a09cd7Sopenharmony_ci{
72737a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt64);
72837a09cd7Sopenharmony_ci}
72937a09cd7Sopenharmony_ci
73037a09cd7Sopenharmony_cibool Parcel::ReadUInt8Vector(std::vector<uint8_t>* val)
73137a09cd7Sopenharmony_ci{
73237a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint8Unaligned);
73337a09cd7Sopenharmony_ci}
73437a09cd7Sopenharmony_ci
73537a09cd7Sopenharmony_cibool Parcel::ReadUInt16Vector(std::vector<uint16_t>* val)
73637a09cd7Sopenharmony_ci{
73737a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint16Unaligned);
73837a09cd7Sopenharmony_ci}
73937a09cd7Sopenharmony_ci
74037a09cd7Sopenharmony_cibool Parcel::ReadUInt32Vector(std::vector<uint32_t>* val)
74137a09cd7Sopenharmony_ci{
74237a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint32);
74337a09cd7Sopenharmony_ci}
74437a09cd7Sopenharmony_ci
74537a09cd7Sopenharmony_cibool Parcel::ReadUInt64Vector(std::vector<uint64_t>* val)
74637a09cd7Sopenharmony_ci{
74737a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint64);
74837a09cd7Sopenharmony_ci}
74937a09cd7Sopenharmony_ci
75037a09cd7Sopenharmony_cibool Parcel::ReadFloatVector(std::vector<float>* val)
75137a09cd7Sopenharmony_ci{
75237a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadFloat);
75337a09cd7Sopenharmony_ci}
75437a09cd7Sopenharmony_ci
75537a09cd7Sopenharmony_cibool Parcel::ReadDoubleVector(std::vector<double>* val)
75637a09cd7Sopenharmony_ci{
75737a09cd7Sopenharmony_ci    return ReadVector(val, &Parcel::ReadDouble);
75837a09cd7Sopenharmony_ci}
75937a09cd7Sopenharmony_ci
76037a09cd7Sopenharmony_cibool Parcel::ReadStringVector(std::vector<std::string>* val)
76137a09cd7Sopenharmony_ci{
76237a09cd7Sopenharmony_ci    (void)val;
76337a09cd7Sopenharmony_ci    return false;
76437a09cd7Sopenharmony_ci}
76537a09cd7Sopenharmony_ci
76637a09cd7Sopenharmony_cibool Parcel::ReadString16Vector(std::vector<std::u16string>* val)
76737a09cd7Sopenharmony_ci{
76837a09cd7Sopenharmony_ci    (void)val;
76937a09cd7Sopenharmony_ci    return false;
77037a09cd7Sopenharmony_ci}
77137a09cd7Sopenharmony_ci} // namespace OHOS
772