1 /* 2 * Copyright (c) 2022-2024 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 "connection_data.h" 17 18 #include "hilog_tag_wrapper.h" 19 #include "string_ex.h" 20 21 namespace OHOS { 22 namespace AbilityRuntime { 23 using namespace OHOS::AppExecFwk; Marshalling(Parcel & parcel) const24bool ConnectionData::Marshalling(Parcel &parcel) const 25 { 26 if (!parcel.WriteInt32(extensionPid)) { 27 return false; 28 } 29 30 if (!parcel.WriteInt32(extensionUid)) { 31 return false; 32 } 33 34 if (!parcel.WriteString16(Str8ToStr16(extensionBundleName))) { 35 return false; 36 } 37 38 if (!parcel.WriteString16(Str8ToStr16(extensionModuleName))) { 39 return false; 40 } 41 42 if (!parcel.WriteString16(Str8ToStr16(extensionName))) { 43 return false; 44 } 45 46 if (!parcel.WriteInt32(static_cast<int32_t>(extensionType))) { 47 return false; 48 } 49 50 if (!parcel.WriteInt32(callerUid)) { 51 return false; 52 } 53 54 if (!parcel.WriteInt32(callerPid)) { 55 return false; 56 } 57 58 if (!parcel.WriteString16(Str8ToStr16(callerName))) { 59 return false; 60 } 61 62 if (!parcel.WriteBool(isSuspended)) { 63 return false; 64 } 65 66 return true; 67 } 68 ReadFromParcel(Parcel & parcel)69bool ConnectionData::ReadFromParcel(Parcel &parcel) 70 { 71 if (!parcel.ReadInt32(extensionPid)) { 72 return false; 73 } 74 75 if (!parcel.ReadInt32(extensionUid)) { 76 return false; 77 } 78 79 std::u16string strValue; 80 if (!parcel.ReadString16(strValue)) { 81 return false; 82 } 83 extensionBundleName = Str16ToStr8(strValue); 84 85 if (!parcel.ReadString16(strValue)) { 86 return false; 87 } 88 extensionModuleName = Str16ToStr8(strValue); 89 90 if (!parcel.ReadString16(strValue)) { 91 return false; 92 } 93 extensionName = Str16ToStr8(strValue); 94 95 int type = 0; 96 if (!parcel.ReadInt32(type)) { 97 return false; 98 } 99 extensionType = static_cast<ExtensionAbilityType>(type); 100 101 if (!parcel.ReadInt32(callerUid)) { 102 TAG_LOGW(AAFwkTag::CONNECTION, "read callerUid failed"); 103 return false; 104 } 105 106 if (!parcel.ReadInt32(callerPid)) { 107 TAG_LOGW(AAFwkTag::CONNECTION, "read callerPid failed"); 108 return false; 109 } 110 111 if (!parcel.ReadString16(strValue)) { 112 TAG_LOGW(AAFwkTag::CONNECTION, "read strValue failed"); 113 return false; 114 } 115 callerName = Str16ToStr8(strValue); 116 117 if (!parcel.ReadBool(isSuspended)) { 118 TAG_LOGW(AAFwkTag::CONNECTION, "read isSuspended failed"); 119 return false; 120 } 121 122 return true; 123 } 124 Unmarshalling(Parcel & parcel)125ConnectionData *ConnectionData::Unmarshalling(Parcel &parcel) 126 { 127 ConnectionData *data = new ConnectionData(); 128 if (!data->ReadFromParcel(parcel)) { 129 delete data; 130 data = nullptr; 131 } 132 return data; 133 } 134 } // namespace AbilityRuntime 135 } // namespace OHOS 136