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