1 /* 2 * Copyright (c) 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 "fault_data.h" 17 18 #include "nlohmann/json.hpp" 19 #include "string_ex.h" 20 21 namespace OHOS { 22 namespace AppExecFwk { ReadFromParcel(Parcel & parcel)23bool FaultData::ReadFromParcel(Parcel &parcel) 24 { 25 std::string strValue; 26 if (!parcel.ReadString(strValue)) { 27 return false; 28 } 29 errorObject.name = strValue; 30 31 if (!parcel.ReadString(strValue)) { 32 return false; 33 } 34 errorObject.message = strValue; 35 36 if (!parcel.ReadString(strValue)) { 37 return false; 38 } 39 errorObject.stack = strValue; 40 41 int type = 0; 42 if (!parcel.ReadInt32(type)) { 43 return false; 44 } 45 faultType = static_cast<FaultDataType>(type); 46 47 if (!parcel.ReadString(strValue)) { 48 return false; 49 } 50 timeoutMarkers = strValue; 51 52 waitSaveState = parcel.ReadBool(); 53 notifyApp = parcel.ReadBool(); 54 forceExit = parcel.ReadBool(); 55 return true; 56 } 57 Unmarshalling(Parcel & parcel)58FaultData *FaultData::Unmarshalling(Parcel &parcel) 59 { 60 FaultData *info = new FaultData(); 61 if (!info->ReadFromParcel(parcel)) { 62 delete info; 63 info = nullptr; 64 } 65 return info; 66 } 67 Marshalling(Parcel & parcel) const68bool FaultData::Marshalling(Parcel &parcel) const 69 { 70 if (!parcel.WriteString(errorObject.name)) { 71 return false; 72 } 73 74 if (!parcel.WriteString(errorObject.message)) { 75 return false; 76 } 77 78 if (!parcel.WriteString(errorObject.stack)) { 79 return false; 80 } 81 82 if (!parcel.WriteInt32(static_cast<int32_t>(faultType))) { 83 return false; 84 } 85 86 if (!parcel.WriteString(timeoutMarkers)) { 87 return false; 88 } 89 90 if (!parcel.WriteBool(waitSaveState)) { 91 return false; 92 } 93 94 if (!parcel.WriteBool(notifyApp)) { 95 return false; 96 } 97 98 if (!parcel.WriteBool(forceExit)) { 99 return false; 100 } 101 return true; 102 } 103 ReadFromParcel(Parcel & parcel)104bool AppFaultDataBySA::ReadFromParcel(Parcel &parcel) 105 { 106 std::string strValue; 107 if (!parcel.ReadString(strValue)) { 108 return false; 109 } 110 errorObject.name = strValue; 111 112 if (!parcel.ReadString(strValue)) { 113 return false; 114 } 115 errorObject.message = strValue; 116 117 if (!parcel.ReadString(strValue)) { 118 return false; 119 } 120 errorObject.stack = strValue; 121 122 int type = 0; 123 if (!parcel.ReadInt32(type)) { 124 return false; 125 } 126 faultType = static_cast<FaultDataType>(type); 127 128 if (!parcel.ReadInt32(pid)) { 129 return false; 130 } 131 132 if (!parcel.ReadString(strValue)) { 133 return false; 134 } 135 timeoutMarkers = strValue; 136 137 waitSaveState = parcel.ReadBool(); 138 notifyApp = parcel.ReadBool(); 139 forceExit = parcel.ReadBool(); 140 return true; 141 } 142 Unmarshalling(Parcel & parcel)143AppFaultDataBySA *AppFaultDataBySA::Unmarshalling(Parcel &parcel) 144 { 145 AppFaultDataBySA *info = new AppFaultDataBySA(); 146 if (!info->ReadFromParcel(parcel)) { 147 delete info; 148 info = nullptr; 149 } 150 return info; 151 } 152 Marshalling(Parcel & parcel) const153bool AppFaultDataBySA::Marshalling(Parcel &parcel) const 154 { 155 if (!parcel.WriteString(errorObject.name)) { 156 return false; 157 } 158 159 if (!parcel.WriteString(errorObject.message)) { 160 return false; 161 } 162 163 if (!parcel.WriteString(errorObject.stack)) { 164 return false; 165 } 166 167 if (!parcel.WriteInt32(static_cast<int32_t>(faultType))) { 168 return false; 169 } 170 171 if (!parcel.WriteInt32(pid)) { 172 return false; 173 } 174 175 if (!parcel.WriteString(timeoutMarkers)) { 176 return false; 177 } 178 179 if (!parcel.WriteBool(waitSaveState)) { 180 return false; 181 } 182 183 if (!parcel.WriteBool(notifyApp)) { 184 return false; 185 } 186 187 if (!parcel.WriteBool(forceExit)) { 188 return false; 189 } 190 return true; 191 } 192 } // namespace AppExecFwk 193 } // namespace OHOS