• 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_data_controller_service.h"
19 
20 #include "cloud_sync_unprepared_data_vo.h"
21 #include "media_log.h"
22 #include "media_column.h"
23 #include "user_define_ipc.h"
24 #include "media_req_vo.h"
25 #include "media_resp_vo.h"
26 #include "medialibrary_errno.h"
27 #include "update_dirty_vo.h"
28 #include "update_position_vo.h"
29 #include "update_sync_status_vo.h"
30 #include "update_thm_status_vo.h"
31 #include "get_aging_file_vo.h"
32 #include "get_video_to_cache_vo.h"
33 #include "get_file_pos_stat_vo.h"
34 #include "get_cloud_thm_stat_vo.h"
35 #include "get_dirty_type_stat_vo.h"
36 #include "cloud_mdkrecord_photos_vo.h"
37 #include "update_local_file_dirty_vo.h"
38 #include "media_operate_result_vo.h"
39 
40 namespace OHOS::Media::CloudSync {
UpdateDirty(MessageParcel & data,MessageParcel & reply)41 int32_t CloudMediaDataControllerService::UpdateDirty(MessageParcel &data, MessageParcel &reply)
42 {
43     MEDIA_INFO_LOG("enter UpdateDirtyForCloudCheck");
44     UpdateDirtyReqBody reqBody;
45     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
46     if (ret != E_OK) {
47         MEDIA_ERR_LOG("UpdateDirtyForCloudCheck Read Req Error");
48         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
49     }
50     ret = this->dataService_.UpdateDirty(reqBody.cloudId, reqBody.dirtyType);
51     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
52 }
53 
UpdatePosition(MessageParcel & data,MessageParcel & reply)54 int32_t CloudMediaDataControllerService::UpdatePosition(MessageParcel &data, MessageParcel &reply)
55 {
56     MEDIA_INFO_LOG("enter UpdatePositionForCloudCheck");
57     UpdatePositionReqBody reqBody;
58     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
59     if (ret != E_OK) {
60         MEDIA_ERR_LOG("UpdatePositionForCloudCheck Read Req Error");
61         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
62     }
63     ret = this->dataService_.UpdatePosition(reqBody.cloudIds, reqBody.position);
64     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
65 }
66 
UpdateSyncStatus(MessageParcel & data,MessageParcel & reply)67 int32_t CloudMediaDataControllerService::UpdateSyncStatus(MessageParcel &data, MessageParcel &reply)
68 {
69     MEDIA_INFO_LOG("enter UpdateSyncStatus");
70     UpdateSyncStatusReqBody reqBody;
71     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
72     if (ret != E_OK) {
73         MEDIA_ERR_LOG("UpdateSyncStatus Read Req Error");
74         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
75     }
76     ret = this->dataService_.UpdateSyncStatus(reqBody.cloudId, reqBody.syncStatus);
77     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
78 }
79 
UpdateThmStatus(MessageParcel & data,MessageParcel & reply)80 int32_t CloudMediaDataControllerService::UpdateThmStatus(MessageParcel &data, MessageParcel &reply)
81 {
82     UpdateThmStatusReqBody reqBody;
83     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
84     if (ret != E_OK) {
85         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
86     }
87     ret = this->dataService_.UpdateThmStatus(reqBody.cloudId, reqBody.thmStatus);
88     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
89 }
90 
GetAgingFile(MessageParcel & data,MessageParcel & reply)91 int32_t CloudMediaDataControllerService::GetAgingFile(MessageParcel &data, MessageParcel &reply)
92 {
93     GetAgingFileReqBody reqBody;
94     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
95     if (ret != E_OK) {
96         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
97     }
98     int32_t sizeLimit = reqBody.sizeLimit;
99     if (sizeLimit <= 0 || sizeLimit > LIMIT_SIZE) {
100         MEDIA_ERR_LOG("GetAgingFile param error, sizeLimit = %{public}d", sizeLimit);
101         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
102     }
103     AgingFileQueryDto queryDto;
104     this->processor_.GetAgingFileQueryDto(reqBody, queryDto);
105     std::vector<PhotosDto> photosDtoList;
106     ret = this->dataService_.GetAgingFile(queryDto, photosDtoList);
107     if (ret != E_OK) {
108         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
109     }
110     std::vector<PhotosVo> photosVoList;
111     for (auto photosDto : photosDtoList) {
112         PhotosVo photosVo = this->processor_.ConvertPhotosDtoToPhotosVo(photosDto);
113         photosVoList.push_back(photosVo);
114     }
115     GetAgingFileRespBody respBody;
116     respBody.photos = photosVoList;
117     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
118 }
119 
GetActiveAgingFile(MessageParcel & data,MessageParcel & reply)120 int32_t CloudMediaDataControllerService::GetActiveAgingFile(MessageParcel &data, MessageParcel &reply)
121 {
122     GetAgingFileReqBody reqBody;
123     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, reqBody);
124     if (ret != E_OK) {
125         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
126     }
127     int32_t sizeLimit = reqBody.sizeLimit;
128     if (sizeLimit <= 0 || sizeLimit > LIMIT_SIZE) {
129         MEDIA_ERR_LOG("GetActiveAgingFile param error, sizeLimit = %{public}d", sizeLimit);
130         return IPC::UserDefineIPC().WriteResponseBody(reply, E_MEDIA_CLOUD_ARGS_INVAILD);
131     }
132     AgingFileQueryDto queryDto;
133     this->processor_.GetAgingFileQueryDto(reqBody, queryDto);
134     std::vector<PhotosDto> photosDtoList;
135     ret = this->dataService_.GetActiveAgingFile(queryDto, photosDtoList);
136     if (ret != E_OK) {
137         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
138     }
139     std::vector<PhotosVo> photosVoList;
140     for (auto photosDto : photosDtoList) {
141         PhotosVo photosVo = this->processor_.ConvertPhotosDtoToPhotosVo(photosDto);
142         photosVoList.push_back(photosVo);
143     }
144     GetAgingFileRespBody respBody;
145     respBody.photos = photosVoList;
146     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
147 }
148 
GetVideoToCache(MessageParcel & data,MessageParcel & reply)149 int32_t CloudMediaDataControllerService::GetVideoToCache(MessageParcel &data, MessageParcel &reply)
150 {
151     std::vector<PhotosDto> photosDtoVec;
152     int32_t ret = this->dataService_.GetVideoToCache(photosDtoVec);
153     if (ret != E_OK) {
154         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
155     }
156     std::vector<PhotosVo> photosVoList;
157     for (auto &photosDto : photosDtoVec) {
158         PhotosVo photosVo = this->processor_.ConvertPhotosDtoToPhotosVo(photosDto);
159         photosVoList.push_back(photosVo);
160     }
161     GetVideoToCacheRespBody respBody;
162     respBody.photos = photosVoList;
163     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
164 }
165 
GetFilePosStat(MessageParcel & data,MessageParcel & reply)166 int32_t CloudMediaDataControllerService::GetFilePosStat(MessageParcel &data, MessageParcel &reply)
167 {
168     MEDIA_INFO_LOG("GetFilePosStat enter");
169     std::vector<uint64_t> statList = this->dataService_.GetFilePosStat();
170     GetFilePosStatRespBody respBody;
171     respBody.statList = statList;
172     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
173 }
174 
GetCloudThmStat(MessageParcel & data,MessageParcel & reply)175 int32_t CloudMediaDataControllerService::GetCloudThmStat(MessageParcel &data, MessageParcel &reply)
176 {
177     MEDIA_INFO_LOG("enter CloudMediaDataControllerService::GetCloudThmStat");
178     std::vector<uint64_t> statList = this->dataService_.GetCloudThmStat();
179     GetCloudThmStatRespBody respBody;
180     respBody.statList = statList;
181     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
182 }
183 
GetDirtyTypeStat(MessageParcel & data,MessageParcel & reply)184 int32_t CloudMediaDataControllerService::GetDirtyTypeStat(MessageParcel &data, MessageParcel &reply)
185 {
186     MEDIA_INFO_LOG("enter CloudMediaDataControllerService::GetDirtyTypeStat");
187     std::vector<uint64_t> statList;
188     int32_t ret = this->dataService_.GetDirtyTypeStat(statList);
189     if (ret != E_OK) {
190         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
191     }
192     GetDirtyTypeStatRespBody respBody;
193     respBody.statList = statList;
194     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
195 }
196 
UpdateLocalFileDirty(MessageParcel & data,MessageParcel & reply)197 int32_t CloudMediaDataControllerService::UpdateLocalFileDirty(MessageParcel &data, MessageParcel &reply)
198 {
199     UpdateLocalFileDirtyReqBody req;
200     int32_t ret = IPC::UserDefineIPC().ReadRequestBody(data, req);
201     if (ret != E_OK) {
202         MEDIA_ERR_LOG("UpdateLocalFileDirty Get Req Error");
203         return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
204     }
205     ret = this->dataService_.UpdateLocalFileDirty(req.cloudIds);
206     MEDIA_INFO_LOG("UpdateLocalFileDirty %{public}zu, %{public}d", req.cloudIds.size(), ret);
207     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
208 }
209 
GetCloudSyncUnPreparedData(MessageParcel & data,MessageParcel & reply)210 int32_t CloudMediaDataControllerService::GetCloudSyncUnPreparedData(MessageParcel &data, MessageParcel &reply)
211 {
212     CloudSyncUnPreparedDataRespBody respBody;
213     int32_t ret = this->enhanceService_.GetCloudSyncUnPreparedData(respBody.count);
214     MEDIA_INFO_LOG("GetCloudSyncUnPreparedData %{public}d, %{public}d", respBody.count, ret);
215     return IPC::UserDefineIPC().WriteResponseBody(reply, respBody);
216 }
217 
SubmitCloudSyncPreparedDataTask(MessageParcel & data,MessageParcel & reply)218 int32_t CloudMediaDataControllerService::SubmitCloudSyncPreparedDataTask(MessageParcel &data, MessageParcel &reply)
219 {
220     int32_t ret = this->enhanceService_.SubmitCloudSyncPreparedDataTask();
221     MEDIA_INFO_LOG("SubmitCloudSyncPreparedDataTask, %{public}d", ret);
222     return IPC::UserDefineIPC().WriteResponseBody(reply, ret);
223 }
224 }  // namespace OHOS::Media::CloudSync