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