• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 "service_reverse_stub.h"
17 
18 #include <cstdint>
19 #include <sstream>
20 
21 #include "b_error/b_error.h"
22 #include "filemgmt_libhilog.h"
23 
24 namespace OHOS::FileManagement::Backup {
25 using namespace std;
26 
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)27 int32_t ServiceReverseStub::OnRemoteRequest(uint32_t code,
28                                             MessageParcel &data,
29                                             MessageParcel &reply,
30                                             MessageOption &option)
31 {
32     const std::u16string descriptor = ServiceReverseStub::GetDescriptor();
33     const std::u16string remoteDescriptor = data.ReadInterfaceToken();
34     if (descriptor != remoteDescriptor) {
35         return BError(BError::Codes::SA_INVAL_ARG, "Invalid remote descriptor");
36     }
37 
38     HILOGI("Begin to call procedure indexed %{public}u", code);
39     auto interfaceIndex = opToInterfaceMap_.find(code);
40     if (interfaceIndex == opToInterfaceMap_.end() || !interfaceIndex->second) {
41         HILOGE("Cannot response request %{public}d : unknown procedure", code);
42         return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
43     }
44     return (this->*(interfaceIndex->second))(data, reply);
45 }
46 
ServiceReverseStub()47 ServiceReverseStub::ServiceReverseStub()
48 {
49     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_BACKUP_ON_FILE_READY)] =
50         &ServiceReverseStub::CmdBackupOnFileReady;
51     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_BACKUP_ON_SUB_TASK_STARTED)] =
52         &ServiceReverseStub::CmdBackupOnBundleStarted;
53     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_BACKUP_ON_SUB_TASK_FINISHED)] =
54         &ServiceReverseStub::CmdBackupOnBundleFinished;
55     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_BACKUP_ON_TASK_FINISHED)] =
56         &ServiceReverseStub::CmdBackupOnAllBundlesFinished;
57 
58     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_RESTORE_ON_SUB_TASK_STARTED)] =
59         &ServiceReverseStub::CmdRestoreOnBundleStarted;
60     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_RESTORE_ON_SUB_TASK_FINISHED)] =
61         &ServiceReverseStub::CmdRestoreOnBundleFinished;
62     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_RESTORE_ON_TASK_FINISHED)] =
63         &ServiceReverseStub::CmdRestoreOnAllBundlesFinished;
64     opToInterfaceMap_[static_cast<uint32_t>(IServiceReverseInterfaceCode::SERVICER_RESTORE_ON_FILE_READY)] =
65         &ServiceReverseStub::CmdRestoreOnFileReady;
66 }
67 
CmdBackupOnFileReady(MessageParcel & data,MessageParcel & reply)68 int32_t ServiceReverseStub::CmdBackupOnFileReady(MessageParcel &data, MessageParcel &reply)
69 {
70     auto bundleName = data.ReadString();
71     auto fileName = data.ReadString();
72     int fd = data.ReadFileDescriptor();
73     BackupOnFileReady(bundleName, fileName, fd);
74     return BError(BError::Codes::OK);
75 }
76 
CmdBackupOnBundleStarted(MessageParcel & data,MessageParcel & reply)77 int32_t ServiceReverseStub::CmdBackupOnBundleStarted(MessageParcel &data, MessageParcel &reply)
78 {
79     int32_t errCode = data.ReadInt32();
80     auto bundleName = data.ReadString();
81     BackupOnBundleStarted(errCode, bundleName);
82     return BError(BError::Codes::OK);
83 }
84 
CmdBackupOnBundleFinished(MessageParcel & data,MessageParcel & reply)85 int32_t ServiceReverseStub::CmdBackupOnBundleFinished(MessageParcel &data, MessageParcel &reply)
86 {
87     int32_t errCode = data.ReadInt32();
88     auto bundleName = data.ReadString();
89     BackupOnBundleFinished(errCode, bundleName);
90     return BError(BError::Codes::OK);
91 }
92 
CmdBackupOnAllBundlesFinished(MessageParcel & data,MessageParcel & reply)93 int32_t ServiceReverseStub::CmdBackupOnAllBundlesFinished(MessageParcel &data, MessageParcel &reply)
94 {
95     int32_t errCode = data.ReadInt32();
96     BackupOnAllBundlesFinished(errCode);
97     return BError(BError::Codes::OK);
98 }
99 
CmdRestoreOnBundleStarted(MessageParcel & data,MessageParcel & reply)100 int32_t ServiceReverseStub::CmdRestoreOnBundleStarted(MessageParcel &data, MessageParcel &reply)
101 {
102     int32_t errCode = data.ReadInt32();
103     auto bundleName = data.ReadString();
104     RestoreOnBundleStarted(errCode, bundleName);
105     return BError(BError::Codes::OK);
106 }
107 
CmdRestoreOnBundleFinished(MessageParcel & data,MessageParcel & reply)108 int32_t ServiceReverseStub::CmdRestoreOnBundleFinished(MessageParcel &data, MessageParcel &reply)
109 {
110     int32_t errCode = data.ReadInt32();
111     auto bundleName = data.ReadString();
112     RestoreOnBundleFinished(errCode, bundleName);
113     return BError(BError::Codes::OK);
114 }
115 
CmdRestoreOnAllBundlesFinished(MessageParcel & data,MessageParcel & reply)116 int32_t ServiceReverseStub::CmdRestoreOnAllBundlesFinished(MessageParcel &data, MessageParcel &reply)
117 {
118     int32_t errCode = data.ReadInt32();
119     RestoreOnAllBundlesFinished(errCode);
120     return BError(BError::Codes::OK);
121 }
122 
CmdRestoreOnFileReady(MessageParcel & data,MessageParcel & reply)123 int32_t ServiceReverseStub::CmdRestoreOnFileReady(MessageParcel &data, MessageParcel &reply)
124 {
125     auto bundleName = data.ReadString();
126     auto fileName = data.ReadString();
127     int fd = data.ReadFileDescriptor();
128     RestoreOnFileReady(bundleName, fileName, fd);
129     return BError(BError::Codes::OK);
130 }
131 } // namespace OHOS::FileManagement::Backup