1 /*
2 * Copyright (c) 2024-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 #include "hiview_service_memory_delegate.h"
17
18 #include "hiview_remote_service.h"
19 #include "hiview_service_ability_proxy.h"
20
21 namespace OHOS {
22 namespace HiviewDFX {
SetAppResourceLimit(UCollectClient::MemoryCaller & memoryCaller)23 CollectResult<int32_t> HiViewServiceMemoryDelegate::SetAppResourceLimit(UCollectClient::MemoryCaller& memoryCaller)
24 {
25 CollectResult<int32_t> ret;
26 auto service = RemoteService::GetHiViewRemoteService();
27 if (!service) {
28 ret.retCode = UCollect::SYSTEM_ERROR;
29 return ret;
30 }
31 int32_t errNo = 0;
32 if (HiviewServiceAbilityProxy(service).SetAppResourceLimit(
33 MemoryCallerParcelable(memoryCaller), errNo, ret.data) == 0) {
34 ret.retCode = static_cast<UCollect::UcError>(errNo);
35 }
36 return ret;
37 }
38
GetGraphicUsage()39 CollectResult<int32_t> HiViewServiceMemoryDelegate::GetGraphicUsage()
40 {
41 CollectResult<int32_t> ret;
42 auto service = RemoteService::GetHiViewRemoteService();
43 if (!service) {
44 ret.retCode = UCollect::SYSTEM_ERROR;
45 return ret;
46 }
47 int32_t errNo = 0;
48 if (HiviewServiceAbilityProxy(service).GetGraphicUsage(errNo, ret.data) == 0) {
49 ret.retCode = static_cast<UCollect::UcError>(errNo);
50 }
51 return ret;
52 }
53
SetSplitMemoryValue(std::vector<UCollectClient::MemoryCaller> & memList)54 CollectResult<int32_t> HiViewServiceMemoryDelegate::SetSplitMemoryValue(
55 std::vector<UCollectClient::MemoryCaller>& memList)
56 {
57 CollectResult<int32_t> ret;
58 auto service = RemoteService::GetHiViewRemoteService();
59 if (!service) {
60 ret.retCode = UCollect::SYSTEM_ERROR;
61 return ret;
62 }
63 std::vector<MemoryCallerParcelable> memCallerParcelableList;
64 for (const auto& item : memList) {
65 memCallerParcelableList.emplace_back(MemoryCallerParcelable(item));
66 }
67 int32_t errNo = 0;
68 if (HiviewServiceAbilityProxy(service).SetSplitMemoryValue(memCallerParcelableList, errNo, ret.data) == 0) {
69 ret.retCode = static_cast<UCollect::UcError>(errNo);
70 }
71 return ret;
72 }
73 }
74 }