| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef DEBUGD_SRC_PROBE_TOOL_H_ |
| #define DEBUGD_SRC_PROBE_TOOL_H_ |
| |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include <base/values.h> |
| #include <brillo/dbus/file_descriptor.h> |
| #include <brillo/errors/error.h> |
| #include <brillo/process/process.h> |
| |
| namespace debugd { |
| |
| class ProbeTool { |
| public: |
| ProbeTool(); |
| ProbeTool(const ProbeTool&) = delete; |
| ProbeTool& operator=(const ProbeTool&) = delete; |
| |
| ~ProbeTool() = default; |
| |
| // Executes the function defined for runtime_probe. |
| bool EvaluateProbeFunction(brillo::ErrorPtr* error, |
| const std::string& probe_statement, |
| brillo::dbus_utils::FileDescriptor* outfd, |
| brillo::dbus_utils::FileDescriptor* errfd); |
| |
| std::unique_ptr<brillo::Process> CreateSandboxedProcess( |
| brillo::ErrorPtr* error, const std::string& probe_statement); |
| |
| bool GetValidMinijailArguments(brillo::ErrorPtr* error, |
| const std::string& function_name, |
| std::vector<std::string>* args_out); |
| |
| protected: |
| void SetMinijailArgumentsForTesting(std::unique_ptr<base::Value> dict); |
| |
| private: |
| bool LoadMinijailArguments(brillo::ErrorPtr* error); |
| base::Value minijail_args_dict_; |
| }; |
| |
| } // namespace debugd |
| |
| #endif // DEBUGD_SRC_PROBE_TOOL_H_ |