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 return true; 63 } 64 ReadFromParcel(Parcel & parcel)65bool ConnectionData::ReadFromParcel(Parcel &parcel) 66 { 67 if (!parcel.ReadInt32(extensionPid)) { 68 return false; 69 } 70 71 if (!parcel.ReadInt32(extensionUid)) { 72 return false; 73 } 74 75 std::u16string strValue; 76 if (!parcel.ReadString16(strValue)) { 77 return false; 78 } 79 extensionBundleName = Str16ToStr8(strValue); 80 81 if (!parcel.ReadString16(strValue)) { 82 return false; 83 } 84 extensionModuleName = Str16ToStr8(strValue); 85 86 if (!parcel.ReadString16(strValue)) { 87 return false; 88 } 89 extensionName = Str16ToStr8(strValue); 90 91 int type = 0; 92 if (!parcel.ReadInt32(type)) { 93 return false; 94 } 95 extensionType = static_cast<ExtensionAbilityType>(type); 96 97 if (!parcel.ReadInt32(callerUid)) { 98 TAG_LOGW(AAFwkTag::CONNECTION, "read callerUid failed"); 99 return false; 100 } 101 102 if (!parcel.ReadInt32(callerPid)) { 103 TAG_LOGW(AAFwkTag::CONNECTION, "read callerPid failed"); 104 return false; 105 } 106 107 if (!parcel.ReadString16(strValue)) { 108 TAG_LOGW(AAFwkTag::CONNECTION, "read strValue failed"); 109 return false; 110 } 111 callerName = Str16ToStr8(strValue); 112 113 return true; 114 } 115 Unmarshalling(Parcel & parcel)116ConnectionData *ConnectionData::Unmarshalling(Parcel &parcel) 117 { 118 ConnectionData *data = new ConnectionData(); 119 if (!data->ReadFromParcel(parcel)) { 120 delete data; 121 data = nullptr; 122 } 123 return data; 124 } 125 } // namespace AbilityRuntime 126 } // namespace OHOS 127