• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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) const24 bool 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)69 bool 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)125 ConnectionData *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