• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "rdb_types_util.h"
17 namespace OHOS::ITypesUtil {
18 template<>
Marshalling(const SyncerParam & input,MessageParcel & data)19 bool Marshalling(const SyncerParam &input, MessageParcel &data)
20 {
21     return ITypesUtil::Marshal(data, input.bundleName_, input.hapName_, input.storeName_, input.area_, input.level_,
22         input.type_, input.isEncrypt_, input.password_, input.customDir_, input.isAutoClean_, input.isSearchable_,
23         input.haMode_, input.infos_, input.tokenIds_, input.uids_, input.user_, input.permissionNames_,
24         input.asyncDownloadAsset_, input.enableCloud_, input.subUser_, input.dfxInfo_);
25 }
26 template<>
Unmarshalling(SyncerParam & output,MessageParcel & data)27 bool Unmarshalling(SyncerParam &output, MessageParcel &data)
28 {
29     return ITypesUtil::Unmarshal(data, output.bundleName_, output.hapName_, output.storeName_, output.area_,
30         output.level_, output.type_, output.isEncrypt_, output.password_, output.customDir_, output.isAutoClean_,
31         output.isSearchable_, output.haMode_, output.infos_, output.tokenIds_, output.uids_, output.user_,
32         output.permissionNames_, output.asyncDownloadAsset_, output.enableCloud_, output.subUser_, output.dfxInfo_);
33 }
34 
35 template<>
Marshalling(const NotifyConfig & input,MessageParcel & data)36 bool Marshalling(const NotifyConfig &input, MessageParcel &data)
37 {
38     return ITypesUtil::Marshal(data, input.delay_, input.isFull_);
39 }
40 template<>
Unmarshalling(NotifyConfig & output,MessageParcel & data)41 bool Unmarshalling(NotifyConfig &output, MessageParcel &data)
42 {
43     return ITypesUtil::Unmarshal(data, output.delay_, output.isFull_);
44 }
45 
46 template<>
Marshalling(const Option & input,MessageParcel & data)47 bool Marshalling(const Option &input, MessageParcel &data)
48 {
49     return ITypesUtil::Marshal(data, input.mode, input.seqNum, input.isAsync, input.isAutoSync, input.isCompensation);
50 }
51 
52 template<>
Unmarshalling(Option & output,MessageParcel & data)53 bool Unmarshalling(Option &output, MessageParcel &data)
54 {
55     return ITypesUtil::Unmarshal(
56         data, output.mode, output.seqNum, output.isAsync, output.isAutoSync, output.isCompensation);
57 }
58 
59 template<>
Marshalling(const RdbPredicates & input,MessageParcel & data)60 bool Marshalling(const RdbPredicates &input, MessageParcel &data)
61 {
62     return ITypesUtil::Marshal(data, input.tables_, input.devices_, input.operations_);
63 }
64 template<>
Unmarshalling(RdbPredicates & output,MessageParcel & data)65 bool Unmarshalling(RdbPredicates &output, MessageParcel &data)
66 {
67     return ITypesUtil::Unmarshal(data, output.tables_, output.devices_, output.operations_);
68 }
69 
70 template<>
Marshalling(const RdbOperation & input,MessageParcel & data)71 bool Marshalling(const RdbOperation &input, MessageParcel &data)
72 {
73     return ITypesUtil::Marshal(data, static_cast<int32_t>(input.operator_), input.field_, input.values_);
74 }
75 
76 template<>
Unmarshalling(RdbOperation & output,MessageParcel & data)77 bool Unmarshalling(RdbOperation &output, MessageParcel &data)
78 {
79     int32_t option;
80     auto ret = ITypesUtil::Unmarshal(data, option, output.field_, output.values_);
81     output.operator_ = static_cast<decltype(output.operator_)>(option);
82     return ret;
83 }
84 
85 template<>
Marshalling(const SubOption & input,MessageParcel & data)86 bool Marshalling(const SubOption &input, MessageParcel &data)
87 {
88     return ITypesUtil::Marshal(data, static_cast<int32_t>(input.mode));
89 }
90 
91 template<>
Unmarshalling(SubOption & output,MessageParcel & data)92 bool Unmarshalling(SubOption &output, MessageParcel &data)
93 {
94     int32_t mode = static_cast<int32_t>(output.mode);
95     auto ret = ITypesUtil::Unmarshal(data, mode);
96     output.mode = static_cast<decltype(output.mode)>(mode);
97     return ret;
98 }
99 template<>
Marshalling(const ValueObject & input,MessageParcel & data)100 bool Marshalling(const ValueObject &input, MessageParcel &data)
101 {
102     return Marshal(data, input.value);
103 }
104 template<>
Unmarshalling(ValueObject & output,MessageParcel & data)105 bool Unmarshalling(ValueObject &output, MessageParcel &data)
106 {
107     return Unmarshal(data, output.value);
108 }
109 
110 template<>
Marshalling(const ValuesBucket & input,MessageParcel & data)111 bool Marshalling(const ValuesBucket &input, MessageParcel &data)
112 {
113     return Marshal(data, input.values_);
114 }
115 template<>
Unmarshalling(ValuesBucket & output,MessageParcel & data)116 bool Unmarshalling(ValuesBucket &output, MessageParcel &data)
117 {
118     return Unmarshal(data, output.values_);
119 }
120 
121 template<>
Marshalling(const Asset & input,MessageParcel & data)122 bool Marshalling(const Asset &input, MessageParcel &data)
123 {
124     return Marshal(data, input.version, input.name, input.size, input.modifyTime, input.uri);
125 }
126 template<>
Unmarshalling(Asset & output,MessageParcel & data)127 bool Unmarshalling(Asset &output, MessageParcel &data)
128 {
129     return Unmarshal(data, output.version, output.name, output.size, output.modifyTime, output.uri);
130 }
131 template<>
Marshalling(const ProgressDetail & input,MessageParcel & data)132 bool Marshalling(const ProgressDetail &input, MessageParcel &data)
133 {
134     return Marshal(data, input.progress, input.code, input.details);
135 }
136 template<>
Unmarshalling(ProgressDetail & output,MessageParcel & data)137 bool Unmarshalling(ProgressDetail &output, MessageParcel &data)
138 {
139     return Unmarshal(data, output.progress, output.code, output.details);
140 }
141 template<>
Marshalling(const TableDetail & input,MessageParcel & data)142 bool Marshalling(const TableDetail &input, MessageParcel &data)
143 {
144     return Marshal(data, input.upload, input.download);
145 }
146 template<>
Unmarshalling(TableDetail & output,MessageParcel & data)147 bool Unmarshalling(TableDetail &output, MessageParcel &data)
148 {
149     return Unmarshal(data, output.upload, output.download);
150 }
151 template<>
Marshalling(const Statistic & input,MessageParcel & data)152 bool Marshalling(const Statistic &input, MessageParcel &data)
153 {
154     return Marshal(data, input.total, input.success, input.failed, input.untreated);
155 }
156 template<>
Unmarshalling(Statistic & output,MessageParcel & data)157 bool Unmarshalling(Statistic &output, MessageParcel &data)
158 {
159     return Unmarshal(data, output.total, output.success, output.failed, output.untreated);
160 }
161 
162 template<>
Marshalling(const PrimaryKeys & input,MessageParcel & data)163 bool Marshalling(const PrimaryKeys &input, MessageParcel &data)
164 {
165     return Marshal(
166         data, input[Observer::CHG_TYPE_INSERT], input[Observer::CHG_TYPE_UPDATE], input[Observer::CHG_TYPE_DELETE]);
167 }
168 template<>
Unmarshalling(PrimaryKeys & output,MessageParcel & data)169 bool Unmarshalling(PrimaryKeys &output, MessageParcel &data)
170 {
171     return Unmarshal(
172         data, output[Observer::CHG_TYPE_INSERT], output[Observer::CHG_TYPE_UPDATE], output[Observer::CHG_TYPE_DELETE]);
173 }
174 
175 template<>
Marshalling(const Origin & input,MessageParcel & data)176 bool Marshalling(const Origin &input, MessageParcel &data)
177 {
178     return Marshal(data, input.origin, input.dataType, input.id, input.store);
179 }
180 template<>
Unmarshalling(Origin & output,MessageParcel & data)181 bool Unmarshalling(Origin &output, MessageParcel &data)
182 {
183     return Unmarshal(data, output.origin, output.dataType, output.id, output.store);
184 }
185 
186 template<>
Marshalling(const RdbChangedData & input,MessageParcel & data)187 bool Marshalling(const RdbChangedData &input, MessageParcel &data)
188 {
189     return Marshal(data, input.tableData);
190 }
191 template<>
Unmarshalling(RdbChangedData & output,MessageParcel & data)192 bool Unmarshalling(RdbChangedData &output, MessageParcel &data)
193 {
194     return Unmarshal(data, output.tableData);
195 }
196 
197 template<>
Marshalling(const RdbProperties & input,MessageParcel & data)198 bool Marshalling(const RdbProperties &input, MessageParcel &data)
199 {
200     return Marshal(data, input.isTrackedDataChange, input.isP2pSyncDataChange);
201 }
202 template<>
Unmarshalling(RdbProperties & output,MessageParcel & data)203 bool Unmarshalling(RdbProperties &output, MessageParcel &data)
204 {
205     return Unmarshal(data, output.isTrackedDataChange, output.isP2pSyncDataChange);
206 }
207 
208 template<>
Marshalling(const Reference & input,MessageParcel & data)209 bool Marshalling(const Reference &input, MessageParcel &data)
210 {
211     return Marshal(data, input.sourceTable, input.targetTable, input.refFields);
212 }
213 template<>
Unmarshalling(Reference & output,MessageParcel & data)214 bool Unmarshalling(Reference &output, MessageParcel &data)
215 {
216     return Unmarshal(data, output.sourceTable, output.targetTable, output.refFields);
217 }
218 
219 template<>
Marshalling(const BigInt & input,MessageParcel & data)220 bool Marshalling(const BigInt &input, MessageParcel &data)
221 {
222     return Marshal(data, input.Sign(), input.Value());
223 }
224 
225 template<>
Unmarshalling(BigInt & output,MessageParcel & data)226 bool Unmarshalling(BigInt &output, MessageParcel &data)
227 {
228     int32_t sign = 0;
229     std::vector<uint64_t> value;
230     if (!Unmarshal(data, sign, value)) {
231         return false;
232     }
233     output = BigInt(sign, std::move(value));
234     return true;
235 }
236 template<>
Marshalling(const DebugInfo & input,MessageParcel & data)237 bool Marshalling(const DebugInfo &input, MessageParcel &data)
238 {
239     return Marshal(data, input.inode_, input.mode_, input.uid_, input.gid_);
240 }
241 template<>
Unmarshalling(DebugInfo & output,MessageParcel & data)242 bool Unmarshalling(DebugInfo &output, MessageParcel &data)
243 {
244     return Unmarshal(data, output.inode_, output.mode_, output.uid_, output.gid_);
245 }
246 
247 template<>
Marshalling(const StatReporter & input,MessageParcel & data)248 bool Marshalling(const StatReporter &input, MessageParcel &data)
249 {
250     return Marshal(data, input.statType, input.bundleName, input.storeName, input.subType, input.costTime);
251 }
252 template<>
Unmarshalling(StatReporter & output,MessageParcel & data)253 bool Unmarshalling(StatReporter &output, MessageParcel &data)
254 {
255     return Unmarshal(data, output.statType, output.bundleName, output.storeName, output.subType, output.costTime);
256 }
257 
258 template<>
Marshalling(const RdbDfxInfo & input,MessageParcel & data)259 bool Marshalling(const RdbDfxInfo &input, MessageParcel &data)
260 {
261     return Marshal(data, input.lastOpenTime_, input.curUserId_);
262 }
263 
264 template<>
Unmarshalling(RdbDfxInfo & output,MessageParcel & data)265 bool Unmarshalling(RdbDfxInfo &output, MessageParcel &data)
266 {
267     return Unmarshal(data, output.lastOpenTime_, output.curUserId_);
268 }
269 } // namespace OHOS::ITypesUtil