• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License"){return 0;}
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 #define MLOG_TAG "Media_Cloud_Controller"
17 
18 #include "cloud_media_photo_controller_service.h"
19 
20 #include "media_log.h"
21 #include "media_column.h"
22 #include "cloud_media_data_controller_processor.h"
23 #include "user_define_ipc.h"
24 #include "media_req_vo.h"
25 #include "media_resp_vo.h"
26 #include "cloud_media_photos_service.h"
27 #include "cloud_media_data_service.h"
28 #include "medialibrary_errno.h"
29 #include "cloud_mdkrecord_photos_vo.h"
30 #include "on_delete_records_photos_vo.h"
31 #include "on_copy_records_photos_vo.h"
32 #include "on_create_records_photos_vo.h"
33 #include "on_modify_records_photos_vo.h"
34 #include "on_fetch_records_vo.h"
35 #include "on_modify_file_dirty_vo.h"
36 #include "get_retey_records_vo.h"
37 #include "on_dentry_file_vo.h"
38 #include "on_fetch_photos_vo.h"
39 #include "failed_size_resp_vo.h"
40 #include "get_check_records_vo.h"
41 #include "report_failure_vo.h"
42 
43 namespace OHOS::Media::CloudSync {
OnFetchRecords(MessageParcel & data,MessageParcel & reply)44 int32_t CloudMediaPhotoControllerService::OnFetchRecords(MessageParcel &data, MessageParcel &reply)
45 {
46     MEDIA_INFO_LOG("enter CloudMediaPhotoControllerService::OnFetchRecords");
47     OnFetchRecordsReqBody reqBody;
48     OnFetchRecordsRespBody respBody;
49     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
50     if (ret != E_OK) {
51         MEDIA_ERR_LOG("OnFetchRecords Read Req Error");
52         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
53     }
54     std::vector<OnFetchPhotosVo> onFetchPhotoDatas = reqBody.GetOnFetchPhotoData();
55     std::vector<std::string> cloudIds;
56     std::map<std::string, CloudMediaPullDataDto> cloudIdRelativeMap;
57     std::vector<PhotosDto> newData;
58     std::vector<PhotosDto> fdirtyData;
59     std::vector<int32_t> stats{0, 0, 0, 0, 0};
60     std::vector<std::string> failedRecords;
61     MEDIA_INFO_LOG("OnFetchRecords onFetchPhotoDatas size: %{public}zu", onFetchPhotoDatas.size());
62     for (auto onFetchPhotoData : onFetchPhotoDatas) {
63         cloudIds.emplace_back(onFetchPhotoData.cloudId);
64         CloudMediaPullDataDto pullData = this->processor_.ConvertToCloudMediaPullData(onFetchPhotoData);
65         cloudIdRelativeMap[onFetchPhotoData.cloudId] = pullData;
66         MEDIA_DEBUG_LOG("OnFetchRecords CloudMediaPullData: %{public}s", pullData.ToString().c_str());
67     }
68     ret = this->photosService_.OnFetchRecords(cloudIds, cloudIdRelativeMap, newData, fdirtyData, stats, failedRecords);
69     respBody.stats = stats;
70     respBody.failedRecords = failedRecords;
71     respBody.newDatas = this->processor_.SetNewDataVoFromDto(newData);
72     respBody.fdirtyDatas = this->processor_.SetFdirtyDataVoFromDto(fdirtyData);
73     MEDIA_INFO_LOG("OnFetchRecords Resp: %{public}s, size:%{public}zu", respBody.ToString().c_str(), newData.size());
74     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
75 }
76 
OnDentryFileInsert(MessageParcel & data,MessageParcel & reply)77 int32_t CloudMediaPhotoControllerService::OnDentryFileInsert(MessageParcel &data, MessageParcel &reply)
78 {
79     MEDIA_INFO_LOG("OnDentryFileInsert enter");
80     OnDentryFileReqBody reqBody;
81     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
82     if (ret != E_OK) {
83         MEDIA_ERR_LOG("OnDentryFileInsert Read Req Error");
84         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
85     }
86     OnDentryFileRespBody respBody;
87     std::vector<std::string> failedRecords;
88     std::vector<OnFetchPhotosVo> onDentryRecords = reqBody.GetOnDentryFileRecord();
89     std::vector<CloudMediaPullDataDto> pullDatas;
90     for (auto onDentryRecord : onDentryRecords) {
91         CloudMediaPullDataDto pullData = this->processor_.ConvertToCloudMediaPullData(onDentryRecord);
92         pullDatas.emplace_back(pullData);
93         MEDIA_DEBUG_LOG("OnDentryFileInsert PullData: %{public}s", pullData.ToString().c_str());
94     }
95     ret = this->photosService_.OnDentryFileInsert(pullDatas, failedRecords);
96     respBody.failedRecords = failedRecords;
97     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
98 }
99 
GetCheckRecords(MessageParcel & data,MessageParcel & reply)100 int32_t CloudMediaPhotoControllerService::GetCheckRecords(MessageParcel &data, MessageParcel &reply)
101 {
102     MEDIA_INFO_LOG("enter CloudMediaPhotoControllerService::GetCheckRecords");
103     GetCheckRecordsReqBody reqBody;
104     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
105     if (ret != E_OK) {
106         MEDIA_ERR_LOG("GetCheckRecords Read Req Error");
107         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
108     }
109     int32_t size = static_cast<int32_t>(reqBody.cloudIds.size());
110     if (size <= 0 || size > LIMIT_SIZE) {
111         MEDIA_ERR_LOG("GetCheckRecords param error, size: %{public}d", size);
112         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
113     }
114     MEDIA_INFO_LOG("GetCheckRecords reqBody: %{public}s", reqBody.ToString().c_str());
115     std::vector<PhotosDto> photosDtoVec = this->photosService_.GetCheckRecords(reqBody.cloudIds);
116     GetCheckRecordsRespBody respBody;
117     respBody.checkDataList = this->processor_.GetCheckRecordsRespBody(photosDtoVec);
118     MEDIA_INFO_LOG("GetCheckRecords RespBody: %{public}s", respBody.ToString().c_str());
119     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
120 }
121 
GetCreatedRecords(MessageParcel & data,MessageParcel & reply)122 int32_t CloudMediaPhotoControllerService::GetCreatedRecords(MessageParcel &data, MessageParcel &reply)
123 {
124     CloudMdkRecordPhotosReqBody reqBody;
125     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
126     if (ret != E_OK) {
127         MEDIA_ERR_LOG("CloudMediaPhotoControllerService::GetCreatedRecords Read Req Error %{public}d", ret);
128         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
129     }
130     int32_t size = reqBody.size;
131     MEDIA_INFO_LOG("enter CloudMediaPhotoControllerService::GetCreatedRecords %{public}d", size);
132     if (size <= 0 || size > LIMIT_SIZE) {
133         MEDIA_ERR_LOG("GetCreatedRecords param error, size: %{public}d", size);
134         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
135     }
136     std::vector<PhotosPo> createdRecordsPoList;
137     ret = this->photosService_.GetCreatedRecords(reqBody.size, createdRecordsPoList);
138     if (ret != E_OK) {
139         MEDIA_ERR_LOG("GetCreatedRecords process error, ret: %{public}d", ret);
140         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
141     }
142     std::vector<CloudMdkRecordPhotosVo> createdRecordsList;
143     for (const auto &createdRecord : createdRecordsPoList) {
144         createdRecordsList.emplace_back(this->processor_.ConvertRecordPoToVo(createdRecord));
145     }
146     CloudMdkRecordPhotosRespBody respBody{createdRecordsList};
147     MEDIA_INFO_LOG("exit CloudMediaPhotoControllerService::GetCreatedRecords %{public}zu", createdRecordsList.size());
148     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
149 }
150 
GetMetaModifiedRecords(MessageParcel & data,MessageParcel & reply)151 int32_t CloudMediaPhotoControllerService::GetMetaModifiedRecords(MessageParcel &data, MessageParcel &reply)
152 {
153     CloudMdkRecordPhotosReqBody reqBody;
154     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
155     if (ret != E_OK) {
156         MEDIA_INFO_LOG("CloudMediaPhotoControllerService::GetMetaModifiedRecords Read Req Err");
157         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
158     }
159     int32_t size = reqBody.size;
160     if (size <= 0 || size > LIMIT_SIZE) {
161         MEDIA_ERR_LOG("GetMetaModifiedRecords param error, size: %{public}d", size);
162         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
163     }
164     bool isInvalidType = reqBody.dirtyType != static_cast<int32_t>(DirtyType::TYPE_MDIRTY) &&
165                          reqBody.dirtyType != static_cast<int32_t>(DirtyType::TYPE_SDIRTY);
166     if (isInvalidType) {
167         MEDIA_ERR_LOG("GetMetaModifiedRecords param error, dirtyType: %{public}d", reqBody.dirtyType);
168         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
169     }
170     std::vector<PhotosPo> metaModifiedRecordsPoList;
171     ret = this->photosService_.GetMetaModifiedRecords(reqBody.size, metaModifiedRecordsPoList, reqBody.dirtyType);
172     if (ret != E_OK) {
173         MEDIA_ERR_LOG("GetMetaModifiedRecords process error, ret: %{public}d", ret);
174         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
175     }
176     std::vector<CloudMdkRecordPhotosVo> metaModifiedRecordsList;
177     for (const auto &metaModifiedRecord : metaModifiedRecordsPoList) {
178         metaModifiedRecordsList.emplace_back(this->processor_.ConvertRecordPoToVo(metaModifiedRecord));
179     }
180     MEDIA_INFO_LOG("end CloudMediaPhotoControllerService::GetMetaModifiedRecords Query:%{public}zu,Result:%{public}zu",
181         metaModifiedRecordsList.size(),
182         metaModifiedRecordsPoList.size());
183     CloudMdkRecordPhotosRespBody respBody{metaModifiedRecordsList};
184     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
185 }
186 
GetFileModifiedRecords(MessageParcel & data,MessageParcel & reply)187 int32_t CloudMediaPhotoControllerService::GetFileModifiedRecords(MessageParcel &data, MessageParcel &reply)
188 {
189     MEDIA_INFO_LOG("enter GetFileModifiedRecords");
190     CloudMdkRecordPhotosReqBody reqBody;
191     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
192     if (ret != E_OK) {
193         MEDIA_ERR_LOG("GetFileModifiedRecords Read Req ERR");
194         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
195     }
196     int32_t size = reqBody.size;
197     MEDIA_INFO_LOG("enter CloudMediaPhotoControllerService::GetFileModifiedRecords %{public}d", size);
198     if (size <= 0 || size > LIMIT_SIZE) {
199         MEDIA_ERR_LOG("GetFileModifiedRecords param error, size: %{public}d", size);
200         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
201     }
202     std::vector<PhotosPo> fileModifiedRecordsPoList;
203     ret = this->photosService_.GetFileModifiedRecords(reqBody.size, fileModifiedRecordsPoList);
204     if (ret != E_OK) {
205         MEDIA_ERR_LOG("GetFileModifiedRecords process error, ret: %{public}d", ret);
206         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
207     }
208     std::vector<CloudMdkRecordPhotosVo> fileModifiedRecordsList;
209     for (const auto &fileModifiedRecord : fileModifiedRecordsPoList) {
210         MEDIA_DEBUG_LOG("GetFileModifiedRecords PO: %{public}s", fileModifiedRecord.ToString().c_str());
211         fileModifiedRecordsList.emplace_back(this->processor_.ConvertRecordPoToVo(fileModifiedRecord));
212     }
213     CloudMdkRecordPhotosRespBody respBody{fileModifiedRecordsList};
214     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
215 }
216 
GetDeletedRecords(MessageParcel & data,MessageParcel & reply)217 int32_t CloudMediaPhotoControllerService::GetDeletedRecords(MessageParcel &data, MessageParcel &reply)
218 {
219     CloudMdkRecordPhotosReqBody reqBody;
220     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
221     if (ret != E_OK) {
222         MEDIA_ERR_LOG("GetDeletedRecords ReadRequestBody error %{public}d", ret);
223         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
224     }
225     int32_t size = reqBody.size;
226     if (size <= 0 || size > LIMIT_SIZE) {
227         MEDIA_ERR_LOG("GetDeletedRecords param error, size: %{public}d", size);
228         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
229     }
230     std::vector<PhotosPo> deletedRecordsPoList = this->photosService_.GetDeletedRecords(reqBody.size);
231     std::vector<CloudMdkRecordPhotosVo> deletedRecordsList;
232     for (const auto &deletedRecord : deletedRecordsPoList) {
233         deletedRecordsList.emplace_back(this->processor_.ConvertRecordPoToVo(deletedRecord));
234     }
235     MEDIA_INFO_LOG("exit CloudMediaPhotoControllerService::GetDeletedRecords %{public}zu", deletedRecordsList.size());
236     CloudMdkRecordPhotosRespBody respBody{deletedRecordsList};
237     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
238 }
239 
GetCopyRecords(MessageParcel & data,MessageParcel & reply)240 int32_t CloudMediaPhotoControllerService::GetCopyRecords(MessageParcel &data, MessageParcel &reply)
241 {
242     CloudMdkRecordPhotosReqBody reqBody;
243     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
244     if (ret != E_OK) {
245         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
246     }
247     int32_t size = reqBody.size;
248     if (size <= 0 || size > LIMIT_SIZE) {
249         MEDIA_ERR_LOG("GetCopyRecords param error, size: %{public}d", size);
250         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
251     }
252     std::vector<PhotosPo> copyRecordsPoList;
253     ret = this->photosService_.GetCopyRecords(reqBody.size, copyRecordsPoList);
254     if (ret != E_OK) {
255         MEDIA_ERR_LOG("GetCopyRecords process error, ret: %{public}d", ret);
256         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
257     }
258     std::vector<CloudMdkRecordPhotosVo> copyRecordsList;
259     for (const auto &copyRecord : copyRecordsPoList) {
260         copyRecordsList.emplace_back(this->processor_.ConvertRecordPoToVo(copyRecord));
261     }
262     MEDIA_INFO_LOG("CloudMediaPhotoControllerService::GetCopyRecords Size: %{public}zu, %{public}zu",
263         copyRecordsPoList.size(),
264         copyRecordsList.size());
265     CloudMdkRecordPhotosRespBody respBody{copyRecordsList};
266     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
267 }
268 
OnCreateRecords(MessageParcel & data,MessageParcel & reply)269 int32_t CloudMediaPhotoControllerService::OnCreateRecords(MessageParcel &data, MessageParcel &reply)
270 {
271     MEDIA_INFO_LOG("enter OnCreateRecords");
272     OnCreateRecordsPhotosReqBody req;
273     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, req);
274     if (ret != E_OK) {
275         MEDIA_ERR_LOG("OnCreateRecords Read Req Err");
276         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
277     }
278     std::vector<PhotosDto> photos;
279     for (const auto &record : req.records) {
280         PhotosDto photo = this->processor_.ConvertToPhotoDto(record);
281         MEDIA_DEBUG_LOG("OnCreateRecords record: %{public}s", record.ToString().c_str());
282         photos.emplace_back(photo);
283     }
284     FailedSizeResp resp;
285     ret = this->photosService_.OnCreateRecords(photos, resp.failedSize);
286     MEDIA_INFO_LOG("OnCreateRecords ret: %{public}d, failedSize:%{public}d", ret, resp.failedSize);
287     return IPC::UserDefineIPC().WriteResponseBody(reply, resp, ret);
288 }
289 
OnMdirtyRecords(MessageParcel & data,MessageParcel & reply)290 int32_t CloudMediaPhotoControllerService::OnMdirtyRecords(MessageParcel &data, MessageParcel &reply)
291 {
292     MEDIA_INFO_LOG("enter OnMdirtyRecords");
293     OnModifyRecordsPhotosReqBody req;
294     FailedSizeResp resp;
295     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, req);
296     if (ret != E_OK) {
297         MEDIA_ERR_LOG("OnMdirtyRecords Read Req Error");
298         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
299     }
300     std::vector<OnModifyRecord> records = req.GetModifyRecords();
301     std::vector<PhotosDto> photos;
302     for (const auto &record : records) {
303         PhotosDto photo;
304         this->processor_.ConvertToPhotosDto(record, photo);
305         photos.emplace_back(photo);
306         MEDIA_DEBUG_LOG("OnMdirtyRecords OnModifyRecord: %{public}s", record.ToString().c_str());
307     }
308     ret = this->photosService_.OnMdirtyRecords(photos, resp.failedSize);
309     return IPC::UserDefineIPC().WriteResponseBody(reply, resp, ret);
310 }
311 
OnFdirtyRecords(MessageParcel & data,MessageParcel & reply)312 int32_t CloudMediaPhotoControllerService::OnFdirtyRecords(MessageParcel &data, MessageParcel &reply)
313 {
314     MEDIA_INFO_LOG("OnFdirtyRecords enter");
315     OnFileDirtyRecordsReqBody req;
316     FailedSizeResp resp;
317     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, req);
318     if (ret != E_OK) {
319         MEDIA_ERR_LOG("OnFdirtyRecords Read Req Error");
320         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
321     }
322     std::vector<PhotosDto> photos;
323     for (const auto &entry : req.records) {
324         PhotosDto photo;
325         this->processor_.ConvertToPhotosDto(entry, photo);
326         MEDIA_ERR_LOG(
327             "OnFdirtyRecords Photo: %{public}s, entry: %{public}s", photo.ToString().c_str(), entry.ToString().c_str());
328         photos.emplace_back(photo);
329     }
330     ret = this->photosService_.OnFdirtyRecords(photos, resp.failedSize);
331     MEDIA_INFO_LOG("OnFdirtyRecords end Ret:%{public}d", ret);
332     return IPC::UserDefineIPC().WriteResponseBody(reply, resp, ret);
333 }
334 
OnDeleteRecords(MessageParcel & data,MessageParcel & reply)335 int32_t CloudMediaPhotoControllerService::OnDeleteRecords(MessageParcel &data, MessageParcel &reply)
336 {
337     MEDIA_INFO_LOG("CloudMediaPhotoControllerService::OnDeleteRecords");
338     OnDeleteRecordsPhotosReqBody reqBody;
339     OnDeleteRecordsPhotosRespBody resp;
340     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
341     if (ret != E_OK) {
342         MEDIA_ERR_LOG("CloudMediaPhotoControllerService::OnDeleteRecords Read Request Error");
343         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
344     }
345     std::vector<PhotosDto> photoDtoList;
346     for (const auto &photo : reqBody.records) {
347         PhotosDto photoDto;
348         photoDto.cloudId = photo.cloudId;
349         photoDto.dkRecordId = photo.dkRecordId;
350         photoDto.isSuccess = photo.isSuccess;
351         photoDtoList.emplace_back(photoDto);
352     }
353     MEDIA_INFO_LOG("CloudMediaPhotoControllerService::OnDeleteRecords size: %{public}zu", photoDtoList.size());
354     ret = this->photosService_.OnDeleteRecords(photoDtoList, resp.failSize);
355     return IPC::UserDefineIPC().WriteResponseBody(reply, resp, ret);
356 }
357 
OnCopyRecords(MessageParcel & data,MessageParcel & reply)358 int32_t CloudMediaPhotoControllerService::OnCopyRecords(MessageParcel &data, MessageParcel &reply)
359 {
360     MEDIA_INFO_LOG("enter CloudMediaPhotoControllerService::OnCopyRecords");
361     OnCopyRecordsPhotosReqBody req;
362     FailedSizeResp resp;
363     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, req);
364     if (ret != E_OK) {
365         MEDIA_ERR_LOG("OnCopyRecords Read Req Error");
366         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
367     }
368     std::vector<OnCopyRecord> records = req.GetRecords();
369     std::vector<PhotosDto> photos;
370     for (const auto &record : records) {
371         PhotosDto photo;
372         photo.fileId = record.fileId;
373         photo.fileType = record.fileType;
374         photo.size = record.size;
375         photo.createTime = record.createTime;
376         photo.modifiedTime = record.modifyTime;
377         photo.cloudVersion = record.version;
378         photo.rotation = record.rotation;
379         photo.cloudId = record.cloudId;
380         photo.path = record.path;
381         photo.fileName = record.fileName;
382         photo.sourcePath = record.sourcePath;
383         photo.isSuccess = record.isSuccess;
384         photo.errorType = record.errorType;
385         photo.serverErrorCode = record.serverErrorCode;
386         photo.errorDetails = record.errorDetails;
387         photos.emplace_back(photo);
388         MEDIA_DEBUG_LOG("OnCopyRecords record: %{public}s", record.ToString().c_str());
389     }
390     ret = this->photosService_.OnCopyRecords(photos, resp.failedSize);
391     return IPC::UserDefineIPC().WriteResponseBody(reply, resp, ret);
392 }
393 
GetRetryRecords(MessageParcel & data,MessageParcel & reply)394 int32_t CloudMediaPhotoControllerService::GetRetryRecords(MessageParcel &data, MessageParcel &reply)
395 {
396     MEDIA_INFO_LOG("enter GetRetryRecords");
397     GetRetryRecordsRespBody respBody;
398     int32_t ret = this->photosService_.GetRetryRecords(respBody.cloudIds);
399     if (ret != E_OK) {
400         MEDIA_ERR_LOG("GetRetryRecords ret error");
401         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
402     }
403     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody, ret);
404 }
405 
OnStartSync(MessageParcel & data,MessageParcel & reply)406 int32_t CloudMediaPhotoControllerService::OnStartSync(MessageParcel &data, MessageParcel &reply)
407 {
408     int32_t ret = this->photosService_.OnStartSync();
409     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
410 }
411 
OnCompleteSync(MessageParcel & data,MessageParcel & reply)412 int32_t CloudMediaPhotoControllerService::OnCompleteSync(MessageParcel &data, MessageParcel &reply)
413 {
414     int32_t ret = this->photosService_.OnCompleteSync();
415     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
416 }
417 
OnCompletePull(MessageParcel & data,MessageParcel & reply)418 int32_t CloudMediaPhotoControllerService::OnCompletePull(MessageParcel &data, MessageParcel &reply)
419 {
420     int32_t ret = this->photosService_.OnCompletePull();
421     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
422 }
423 
OnCompletePush(MessageParcel & data,MessageParcel & reply)424 int32_t CloudMediaPhotoControllerService::OnCompletePush(MessageParcel &data, MessageParcel &reply)
425 {
426     int32_t ret = this->photosService_.OnCompletePush();
427     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
428 }
429 
OnCompleteCheck(MessageParcel & data,MessageParcel & reply)430 int32_t CloudMediaPhotoControllerService::OnCompleteCheck(MessageParcel &data, MessageParcel &reply)
431 {
432     int32_t ret = this->photosService_.OnCompleteCheck();
433     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
434 }
435 
ReportFailure(MessageParcel & data,MessageParcel & reply)436 int32_t CloudMediaPhotoControllerService::ReportFailure(MessageParcel &data, MessageParcel &reply)
437 {
438     MEDIA_INFO_LOG("enter CloudMediaPhotoControllerService::ReportFailure");
439     ReportFailureReqBody reqBody;
440     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
441     if (ret != E_OK) {
442         MEDIA_ERR_LOG("ReportFailure Read Req Error");
443         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
444     }
445     ret = this->photosService_.ReportFailure(this->processor_.GetReportFailureDto(reqBody));
446     return IPC::UserDefineIPC().WriteResponseBody(reply);
447 }
448 }  // namespace OHOS::Media::CloudSync