1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #include "cmDebuggerThreadManager.h"
- #include <algorithm>
- #include <cm3p/cppdap/protocol.h>
- #include "cmDebuggerThread.h"
- namespace cmDebugger {
- std::atomic<int64_t> cmDebuggerThreadManager::NextThreadId(1);
- std::shared_ptr<cmDebuggerThread> cmDebuggerThreadManager::StartThread(
- std::string const& name)
- {
- std::shared_ptr<cmDebuggerThread> thread =
- std::make_shared<cmDebuggerThread>(
- cmDebuggerThreadManager::NextThreadId.fetch_add(1), name);
- Threads.emplace_back(thread);
- return thread;
- }
- void cmDebuggerThreadManager::EndThread(
- std::shared_ptr<cmDebuggerThread> const& thread)
- {
- Threads.remove(thread);
- }
- cm::optional<dap::StackTraceResponse>
- cmDebuggerThreadManager::GetThreadStackTraceResponse(int64_t id)
- {
- auto it = find_if(Threads.begin(), Threads.end(),
- [&](const std::shared_ptr<cmDebuggerThread>& t) {
- return t->GetId() == id;
- });
- if (it == Threads.end()) {
- return {};
- }
- return GetStackTraceResponse(*it);
- }
- } // namespace cmDebugger
|