• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }