• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 package ohos.devtools.pluginconfig;
17 
18 import ohos.devtools.datasources.transport.grpc.MemoryPlugHelper;
19 import ohos.devtools.datasources.transport.grpc.service.MemoryPluginConfig;
20 import ohos.devtools.datasources.utils.datahandler.datapoller.MemoryDataConsumer;
21 import ohos.devtools.datasources.utils.device.entity.DeviceIPPortInfo;
22 import ohos.devtools.datasources.utils.plugin.IPluginConfig;
23 import ohos.devtools.datasources.utils.plugin.entity.AnalysisType;
24 import ohos.devtools.datasources.utils.plugin.entity.DPlugin;
25 import ohos.devtools.datasources.utils.plugin.entity.HiProfilerPluginConfig;
26 import ohos.devtools.datasources.utils.plugin.entity.PluginConf;
27 import ohos.devtools.datasources.utils.plugin.entity.PluginMode;
28 import ohos.devtools.datasources.utils.process.entity.ProcessInfo;
29 import ohos.devtools.datasources.utils.profilerlog.ProfilerLogManager;
30 import ohos.devtools.views.layout.chartview.ProfilerMonitorItem;
31 import ohos.devtools.views.layout.chartview.memory.MemoryItemView;
32 import org.apache.logging.log4j.LogManager;
33 import org.apache.logging.log4j.Logger;
34 
35 import static ohos.devtools.datasources.utils.common.Constant.MEMORY_PLUG;
36 import static ohos.devtools.datasources.utils.device.entity.DeviceType.FULL_HOS_DEVICE;
37 
38 /**
39  * MemoryConfig
40  *
41  * @since 2021/9/20
42  */
43 @DPlugin
44 public class MemoryConfig extends IPluginConfig {
45     private static final Logger LOGGER = LogManager.getLogger(MemoryConfig.class);
46     private static final String MEM_PLUGIN_NAME = "/data/local/tmp/libmemdataplugin.z.so";
47 
48     @Override
createConfig()49     public PluginConf createConfig() {
50         if (ProfilerLogManager.isInfoEnabled()) {
51             LOGGER.info("createConfig");
52         }
53         ProfilerMonitorItem memoryItem = new ProfilerMonitorItem(2, "Memory", MemoryItemView.class);
54         PluginConf memoryConfig =
55             new PluginConf(MEM_PLUGIN_NAME, MEMORY_PLUG, MemoryDataConsumer.class, true, memoryItem);
56         memoryConfig.setICreatePluginConfig((deviceIPPortInfo, processInfo) -> new HiProfilerPluginConfig(40,
57             getConfig(deviceIPPortInfo, processInfo).toByteString()));
58         memoryConfig.setPluginMode(PluginMode.ONLINE);
59         memoryConfig.addAnalysisTypes(AnalysisType.APPLICATION_TYPE);
60         return memoryConfig;
61     }
62 
getConfig(DeviceIPPortInfo device, ProcessInfo process)63     private static MemoryPluginConfig.MemoryConfig getConfig(DeviceIPPortInfo device, ProcessInfo process) {
64         if (ProfilerLogManager.isInfoEnabled()) {
65             LOGGER.info("getConfig");
66         }
67         MemoryPluginConfig.MemoryConfig plug;
68         if (device.getDeviceType() == FULL_HOS_DEVICE) {
69             plug = MemoryPlugHelper.createMemRequest(process.getProcessId(), false, true, true, true);
70         } else {
71             plug = MemoryPlugHelper.createMemRequest(process.getProcessId(), false, true, true, false);
72         }
73         return plug;
74     }
75 }
76