1 /*
2  * Copyright (c) 2023-2023 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 "deferred_photo_processing_session_stub.h"
17 #include "deferred_processing_service_ipc_interface_code.h"
18 #include "metadata_utils.h"
19 #include "dp_log.h"
20 
21 namespace OHOS {
22 namespace CameraStandard {
23 namespace DeferredProcessing {
DeferredPhotoProcessingSessionStub()24 DeferredPhotoProcessingSessionStub::DeferredPhotoProcessingSessionStub()
25 {
26     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub Instances create");
27 }
28 
~DeferredPhotoProcessingSessionStub()29 DeferredPhotoProcessingSessionStub::~DeferredPhotoProcessingSessionStub()
30 {
31     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub Instances destroy");
32 }
33 
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)34 int DeferredPhotoProcessingSessionStub::OnRemoteRequest(uint32_t code, MessageParcel& data,
35     MessageParcel& reply, MessageOption& option)
36 {
37     int errCode = -1;
38     DP_CHECK_RETURN_RET(data.ReadInterfaceToken() != GetDescriptor(), errCode);
39 
40     switch (code) {
41         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_BEGIN_SYNCHRONIZE): {
42             errCode = DeferredPhotoProcessingSessionStub::HandleBeginSynchronize(data);
43             break;
44         }
45         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_END_SYNCHRONIZE):
46             errCode = DeferredPhotoProcessingSessionStub::HandleEndSynchronize(data);
47             break;
48         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_ADD_IMAGE): {
49             errCode = DeferredPhotoProcessingSessionStub::HandleAddImage(data);
50             break;
51         }
52         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_REMOVE_IMAGE):
53             errCode = DeferredPhotoProcessingSessionStub::HandleRemoveImage(data);
54             break;
55         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_RESTORE_IMAGE): {
56             errCode = DeferredPhotoProcessingSessionStub::HandleRestoreImage(data);
57             break;
58         }
59         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_PROCESS_IMAGE): {
60             errCode = DeferredPhotoProcessingSessionStub::HandleProcessImage(data);
61             break;
62         }
63         case static_cast<uint32_t>(DeferredProcessingServiceInterfaceCode::DPS_CANCEL_PROCESS_IMAGE): {
64             errCode = DeferredPhotoProcessingSessionStub::HandleCancelProcessImage(data);
65             break;
66         }
67         default:
68             DP_ERR_LOG("DeferredPhotoProcessingSessionStub request code %{public}d not handled", code);
69             errCode = IPCObjectStub::OnRemoteRequest(code, data, reply, option);
70             break;
71     }
72     return errCode;
73 }
74 
HandleBeginSynchronize(MessageParcel & data)75 int DeferredPhotoProcessingSessionStub::HandleBeginSynchronize(MessageParcel& data)
76 {
77     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleBeginSynchronize enter");
78     int32_t ret = BeginSynchronize();
79     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleBeginSynchronize result: %{public}d", ret);
80     return ret;
81 }
82 
HandleEndSynchronize(MessageParcel & data)83 int DeferredPhotoProcessingSessionStub::HandleEndSynchronize(MessageParcel& data)
84 {
85     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleEndSynchronize enter");
86     int32_t ret = EndSynchronize();
87     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleEndSynchronize result: %{public}d", ret);
88     return ret;
89 }
90 
HandleAddImage(MessageParcel & data)91 int DeferredPhotoProcessingSessionStub::HandleAddImage(MessageParcel& data)
92 {
93     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleAddImage enter");
94     std::string imageId = data.ReadString();
95     DpsMetadata metadata;
96     metadata.ReadFromParcel(data);
97     bool discardable = data.ReadBool();
98 
99     int32_t ret = AddImage(imageId, metadata, discardable);
100     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleAddImage result: %{public}d", ret);
101     return ret;
102 }
103 
HandleRemoveImage(MessageParcel & data)104 int DeferredPhotoProcessingSessionStub::HandleRemoveImage(MessageParcel& data)
105 {
106     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleRemoveImage enter");
107     std::string imageId = data.ReadString();
108     bool restorable = data.ReadBool();
109 
110     int32_t ret = RemoveImage(imageId, restorable);
111     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleRemoveImage result: %{public}d", ret);
112     return ret;
113 }
114 
HandleRestoreImage(MessageParcel & data)115 int DeferredPhotoProcessingSessionStub::HandleRestoreImage(MessageParcel& data)
116 {
117     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleRestoreImage enter");
118     std::string imageId = data.ReadString();
119 
120     int32_t ret = RestoreImage(imageId);
121     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleRestoreImage result: %{public}d", ret);
122     return ret;
123 }
124 
HandleProcessImage(MessageParcel & data)125 int DeferredPhotoProcessingSessionStub::HandleProcessImage(MessageParcel& data)
126 {
127     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleProcessImage enter");
128     std::string appName = data.ReadString();
129     std::string imageId = data.ReadString();
130 
131     int32_t ret = ProcessImage(appName, imageId);
132     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleProcessImage result: %{public}d", ret);
133     return ret;
134 }
135 
HandleCancelProcessImage(MessageParcel & data)136 int DeferredPhotoProcessingSessionStub::HandleCancelProcessImage(MessageParcel& data)
137 {
138     DP_DEBUG_LOG("DeferredPhotoProcessingSessionStub HandleCancelProcessImage enter");
139     std::string imageId = data.ReadString();
140     int32_t ret = CancelProcessImage(imageId);
141     DP_INFO_LOG("DeferredPhotoProcessingSessionStub HandleCancelProcessImage result: %{public}d", ret);
142     return ret;
143 }
144 
145 } // namespace DeferredProcessing
146 } // namespace CameraStandard
147 } // namespace OHOS