123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #pragma once
- #include "cmConfigure.h" // IWYU pragma: keep
- #include <atomic>
- #include <cstdint>
- #include <memory>
- #include <mutex>
- #include <string>
- #include <thread>
- #include <vector>
- #include <cm/optional>
- #include <cm3p/cppdap/io.h> // IWYU pragma: keep
- #include "cmMessageType.h" // IWYU pragma: keep
- class cmListFileFunction;
- class cmMakefile;
- namespace cmDebugger {
- class Semaphore;
- class SyncEvent;
- class cmDebuggerBreakpointManager;
- class cmDebuggerExceptionManager;
- class cmDebuggerThread;
- class cmDebuggerThreadManager;
- }
- namespace dap {
- class Session;
- }
- namespace cmDebugger {
- class cmDebuggerConnection
- {
- public:
- virtual ~cmDebuggerConnection() = default;
- virtual bool StartListening(std::string& errorMessage) = 0;
- virtual void WaitForConnection() = 0;
- virtual std::shared_ptr<dap::Reader> GetReader() = 0;
- virtual std::shared_ptr<dap::Writer> GetWriter() = 0;
- };
- class cmDebuggerAdapter
- {
- public:
- cmDebuggerAdapter(std::shared_ptr<cmDebuggerConnection> connection,
- std::string const& dapLogPath);
- cmDebuggerAdapter(std::shared_ptr<cmDebuggerConnection> connection,
- cm::optional<std::shared_ptr<dap::Writer>> logger);
- ~cmDebuggerAdapter();
- void ReportExitCode(int exitCode);
- void OnFileParsedSuccessfully(
- std::string const& sourcePath,
- std::vector<cmListFileFunction> const& functions);
- void OnBeginFunctionCall(cmMakefile* mf, std::string const& sourcePath,
- cmListFileFunction const& lff);
- void OnEndFunctionCall();
- void OnBeginFileParse(cmMakefile* mf, std::string const& sourcePath);
- void OnEndFileParse();
- void OnMessageOutput(MessageType t, std::string const& text);
- private:
- void ClearStepRequests();
- std::shared_ptr<cmDebuggerConnection> Connection;
- std::unique_ptr<dap::Session> Session;
- std::shared_ptr<dap::Writer> SessionLog;
- std::thread SessionThread;
- std::atomic<bool> SessionActive;
- std::mutex Mutex;
- std::unique_ptr<SyncEvent> DisconnectEvent;
- std::unique_ptr<SyncEvent> ConfigurationDoneEvent;
- std::unique_ptr<Semaphore> ContinueSem;
- std::atomic<int64_t> NextStepFrom;
- std::atomic<bool> StepInRequest;
- std::atomic<int64_t> StepOutDepth;
- std::atomic<bool> PauseRequest;
- std::unique_ptr<cmDebuggerThreadManager> ThreadManager;
- std::shared_ptr<cmDebuggerThread> DefaultThread;
- std::unique_ptr<cmDebuggerBreakpointManager> BreakpointManager;
- std::unique_ptr<cmDebuggerExceptionManager> ExceptionManager;
- bool SupportsVariableType;
- };
- } // namespace cmDebugger
|