1/*
2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#include "mission_info.h"
17
18namespace OHOS {
19namespace AAFwk {
20bool MissionInfo::ReadFromParcel(Parcel &parcel)
21{
22    id = parcel.ReadInt32();
23    runningState = parcel.ReadInt32();
24    lockedState = parcel.ReadBool();
25    continuable = parcel.ReadBool();
26    time = Str16ToStr8(parcel.ReadString16());
27    label = Str16ToStr8(parcel.ReadString16());
28    iconPath = Str16ToStr8(parcel.ReadString16());
29    std::unique_ptr<Want> parcelWant(parcel.ReadParcelable<Want>());
30    if (parcelWant == nullptr) {
31        return false;
32    }
33    want = *parcelWant;
34    want.CloseAllFd();
35    abilityState = parcel.ReadInt32();
36    unclearable = parcel.ReadBool();
37    continueState = static_cast<AAFwk::ContinueState>(parcel.ReadInt32());
38    return true;
39}
40
41MissionInfo *MissionInfo::Unmarshalling(Parcel &parcel)
42{
43    MissionInfo *info = new MissionInfo();
44    if (!info->ReadFromParcel(parcel)) {
45        delete info;
46        info = nullptr;
47    }
48    return info;
49}
50
51bool MissionInfo::Marshalling(Parcel &parcel) const
52{
53    if (!parcel.WriteInt32(id)) {
54        return false;
55    }
56
57    if (!parcel.WriteInt32(runningState)) {
58        return false;
59    }
60
61    if (!parcel.WriteBool(lockedState)) {
62        return false;
63    }
64
65    if (!parcel.WriteBool(continuable)) {
66        return false;
67    }
68
69    if (!parcel.WriteString16(Str8ToStr16(time))) {
70        return false;
71    }
72
73    if (!parcel.WriteString16(Str8ToStr16(label))) {
74        return false;
75    }
76
77    if (!parcel.WriteString16(Str8ToStr16(iconPath))) {
78        return false;
79    }
80
81    if (!parcel.WriteParcelable(&want)) {
82        return false;
83    }
84
85    if (!parcel.WriteInt32(abilityState)) {
86        return false;
87    }
88
89    if (!parcel.WriteBool(unclearable)) {
90        return false;
91    }
92
93    if (!parcel.WriteInt32(static_cast<int32_t>(continueState))) {
94        return false;
95    }
96    return true;
97}
98
99bool MissionValidResult::ReadFromParcel(Parcel &parcel)
100{
101    missionId = parcel.ReadInt32();
102    isValid = parcel.ReadBool();
103    return true;
104}
105
106bool MissionValidResult::Marshalling(Parcel &parcel) const
107{
108    if (!parcel.WriteInt32(missionId)) {
109        return false;
110    }
111
112    if (!parcel.WriteBool(isValid)) {
113        return false;
114    }
115
116    return true;
117}
118
119MissionValidResult *MissionValidResult::Unmarshalling(Parcel &parcel)
120{
121    std::unique_ptr<MissionValidResult> info = std::make_unique<MissionValidResult>();
122    if (!info->ReadFromParcel(parcel)) {
123        return nullptr;
124    }
125    return info.release();
126}
127}  // namespace AAFwk
128}  // namespace OHOS
129