• 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");
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 #ifndef OHOS_MEDIA_CLOUD_SYNC_CLOUD_MEDIA_DATA_CONTROLLER_SERVICE_H
17 #define OHOS_MEDIA_CLOUD_SYNC_CLOUD_MEDIA_DATA_CONTROLLER_SERVICE_H
18 
19 #include <string>
20 #include <vector>
21 #include <map>
22 
23 #include "message_parcel.h"
24 #include "datashare_stub.h"
25 #include "sys_utils.h"
26 #include "photos_dto.h"
27 #include "photos_vo.h"
28 #include "rdb_store.h"
29 #include "i_media_controller_service.h"
30 #include "cloud_media_operation_code.h"
31 #include "medialibrary_errno.h"
32 #include "media_resp_vo.h"
33 #include "media_empty_obj_vo.h"
34 #include "user_define_ipc.h"
35 #include "cloud_media_data_controller_processor.h"
36 #include "cloud_media_data_service.h"
37 #include "cloud_media_define.h"
38 #include "cloud_media_enhance_service.h"
39 
40 namespace OHOS::Media::CloudSync {
41 class EXPORT CloudMediaDataControllerService : public IPC::IMediaControllerService {
42 private:
43     int32_t UpdateDirty(MessageParcel &data, MessageParcel &reply);
44     int32_t UpdatePosition(MessageParcel &data, MessageParcel &reply);
45     int32_t UpdateThmStatus(MessageParcel &data, MessageParcel &reply);
46     int32_t GetAgingFile(MessageParcel &data, MessageParcel &reply);
47     int32_t GetActiveAgingFile(MessageParcel &data, MessageParcel &reply);
48     int32_t GetVideoToCache(MessageParcel &data, MessageParcel &reply);
49     int32_t GetFilePosStat(MessageParcel &data, MessageParcel &reply);
50     int32_t GetCloudThmStat(MessageParcel &data, MessageParcel &reply);
51     int32_t GetDirtyTypeStat(MessageParcel &data, MessageParcel &reply);
52     int32_t UpdateLocalFileDirty(MessageParcel &data, MessageParcel &reply);
53     int32_t UpdateSyncStatus(MessageParcel &data, MessageParcel &reply);
54     int32_t GetCloudSyncUnPreparedData(MessageParcel &data, MessageParcel &reply);
55     int32_t SubmitCloudSyncPreparedDataTask(MessageParcel &data, MessageParcel &reply);
56 
57 private:
58     using RequestHandle = int32_t (CloudMediaDataControllerService::*)(MessageParcel &, MessageParcel &);
59     const std::map<uint32_t, RequestHandle> HANDLERS = {
60         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_UPDATE_DIRTY_FOR_CLOUD_CHECK),
61             &CloudMediaDataControllerService::UpdateDirty},
62         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_UPDATE_POSITION_FOR_CLOUD_CHECK),
63             &CloudMediaDataControllerService::UpdatePosition},
64         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_UPDATE_THM_STATUS_FOR_CLOUD_CHECK),
65             &CloudMediaDataControllerService::UpdateThmStatus},
66         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_VIDEO_TO_CACHE),
67             &CloudMediaDataControllerService::GetVideoToCache},
68         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_FILE_POS_STAT),
69             &CloudMediaDataControllerService::GetFilePosStat},
70         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_CLOUD_THM_STAT),
71             &CloudMediaDataControllerService::GetCloudThmStat},
72         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_DIRTY_TYPE_STAT),
73             &CloudMediaDataControllerService::GetDirtyTypeStat},
74         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_AGING_ASSET),
75             &CloudMediaDataControllerService::GetAgingFile},
76         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_ACTIVE_AGING_ASSET),
77             &CloudMediaDataControllerService::GetActiveAgingFile},
78         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_UPDATE_LOCAL_FILE_DIRTY),
79             &CloudMediaDataControllerService::UpdateLocalFileDirty},
80         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_UPDATE_SYNC_STATUS),
81             &CloudMediaDataControllerService::UpdateSyncStatus},
82         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_GET_CLOUD_SYNC_UNPREPARED_DATA),
83             &CloudMediaDataControllerService::GetCloudSyncUnPreparedData},
84         {static_cast<uint32_t>(CloudMediaOperationCode::CMD_SUBMIT_CLOUD_SYNC_UNPREPARED_DATA_TASK),
85             &CloudMediaDataControllerService::SubmitCloudSyncPreparedDataTask},
86     };
87 
88 public:
89     virtual ~CloudMediaDataControllerService() = default;
Accept(uint32_t code)90     bool Accept(uint32_t code) override
91     {
92         return this->HANDLERS.find(code) != this->HANDLERS.end();
93     }
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,OHOS::Media::IPC::IPCContext & context)94     int32_t OnRemoteRequest(
95         uint32_t code, MessageParcel &data, MessageParcel &reply, OHOS::Media::IPC::IPCContext &context) override
96     {
97         auto it = this->HANDLERS.find(code);
98         if (!this->Accept(code) || it == this->HANDLERS.end()) {
99             return IPC::UserDefineIPC().WriteResponseBody(reply, E_IPC_SEVICE_NOT_FOUND);
100         }
101         SysUtils::SlowDown();
102         return (this->*(it->second))(data, reply);
103     }
GetPermissionPolicy(uint32_t code,std::vector<std::vector<PermissionType>> & permissionPolicy,bool & isBypass)104     int32_t GetPermissionPolicy(
105         uint32_t code, std::vector<std::vector<PermissionType>> &permissionPolicy, bool &isBypass) override
106     {
107         permissionPolicy = {{CLOUD_READ, CLOUD_WRITE}};
108         return E_SUCCESS;
109     }
110 
111 private:
112     CloudMediaDataControllerProcessor processor_;
113     CloudMediaDataService dataService_;
114     CloudMediaEnhanceService enhanceService_;
115 };
116 }  // namespace OHOS::Media::CloudSync
117 #endif  // OHOS_MEDIA_CLOUD_SYNC_CLOUD_MEDIA_DATA_CONTROLLER_SERVICE_H