//===-- StructuredDataPlugin.h ----------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_TARGET_STRUCTUREDDATAPLUGIN_H #define LLDB_TARGET_STRUCTUREDDATAPLUGIN_H #include "lldb/Core/PluginInterface.h" #include "lldb/Utility/StructuredData.h" namespace lldb_private { class CommandObjectMultiword; /// Plugin that supports process-related structured data sent asynchronously /// from the debug monitor (e.g. debugserver, lldb-server, etc.) /// /// This plugin type is activated by a Process-derived instance when that /// instance detects that a given structured data feature is available. /// /// StructuredDataPlugin instances are inherently tied to a process. The /// main functionality they support is the ability to consume asynchronously- /// delivered structured data from the process monitor, and do something /// reasonable with it. Something reasonable can include broadcasting a /// StructuredData event, which other parts of the system can then do with /// as they please. An IDE could use this facility to retrieve CPU usage, /// memory usage, and other run-time aspects of the process. That data /// can then be displayed meaningfully to the user through the IDE. /// For command-line LLDB, the Debugger instance listens for the structured /// data events raised by the plugin, and give the plugin both the output /// and error streams such that the plugin can display something about the /// event, at a time when the debugger ensures it is safe to write to the /// output or error streams. class StructuredDataPlugin : public PluginInterface, public std::enable_shared_from_this<StructuredDataPlugin> { … }; } #endif