LLDB
mainline
|
The generator is responsible for the logic needed to generate a reproducer. More...
#include <Reproducer.h>
Public Member Functions | |
Generator (FileSpec root) | |
~Generator () | |
void | Keep () |
Method to indicate we want to keep the reproducer. More... | |
void | Discard () |
Method to indicate we do not want to keep the reproducer. More... | |
void | SetAutoGenerate (bool b) |
Enable or disable auto generate. More... | |
bool | IsAutoGenerate () const |
Return whether auto generate is enabled. More... | |
template<typename T > | |
T * | Create () |
Create and register a new provider. More... | |
template<typename T > | |
T * | Get () |
Get an existing provider. More... | |
template<typename T > | |
T & | GetOrCreate () |
Get a provider if it exists, otherwise create it. More... | |
const FileSpec & | GetRoot () const |
Private Member Functions | |
ProviderBase * | Register (std::unique_ptr< ProviderBase > provider) |
void | AddProvidersToIndex () |
Builds and index with provider info. More... | |
Private Attributes | |
friend | Reproducer |
llvm::DenseMap< const void *, std::unique_ptr< ProviderBase > > | m_providers |
Map of provider IDs to provider instances. More... | |
std::mutex | m_providers_mutex |
FileSpec | m_root |
The reproducer root directory. More... | |
bool | m_done = false |
Flag to ensure that we never call both keep and discard. More... | |
bool | m_auto_generate = false |
Flag to auto generate a reproducer when it would otherwise be discarded. More... | |
The generator is responsible for the logic needed to generate a reproducer.
For doing so it relies on providers, who serialize data that is necessary for reproducing a failure.
Definition at line 89 of file Reproducer.h.
Generator::Generator | ( | FileSpec | root | ) |
Definition at line 130 of file Reproducer.cpp.
Generator::~Generator | ( | ) |
Definition at line 135 of file Reproducer.cpp.
References Discard(), Keep(), m_auto_generate, and m_done.
|
private |
Builds and index with provider info.
Definition at line 181 of file Reproducer.cpp.
References lldb_private::FileSpec::AppendPathComponent(), lldb_private::FileSpec::GetPath(), m_providers, and m_root.
Referenced by Keep().
|
inline |
Create and register a new provider.
Definition at line 111 of file Reproducer.h.
References m_root, and Register().
void Generator::Discard | ( | ) |
Method to indicate we do not want to keep the reproducer.
This is unaffected by whether or not generation reproduction is enabled, as we might need to clean up files already written to disk.
Definition at line 164 of file Reproducer.cpp.
References lldb_private::FileSpec::GetPath(), LLDB_SCOPED_TIMER, m_done, m_providers, and m_root.
Referenced by ~Generator().
|
inline |
|
inline |
Get a provider if it exists, otherwise create it.
Definition at line 125 of file Reproducer.h.
const FileSpec & Generator::GetRoot | ( | ) | const |
Definition at line 179 of file Reproducer.cpp.
References m_root.
bool Generator::IsAutoGenerate | ( | ) | const |
Return whether auto generate is enabled.
Definition at line 177 of file Reproducer.cpp.
References m_auto_generate.
void Generator::Keep | ( | ) |
Method to indicate we want to keep the reproducer.
If reproducer generation is disabled, this does nothing.
Definition at line 153 of file Reproducer.cpp.
References AddProvidersToIndex(), LLDB_SCOPED_TIMER, m_done, and m_providers.
Referenced by ~Generator().
|
private |
Definition at line 145 of file Reproducer.cpp.
References m_providers, and m_providers_mutex.
Referenced by Create().
void Generator::SetAutoGenerate | ( | bool | b | ) |
Enable or disable auto generate.
Definition at line 175 of file Reproducer.cpp.
References m_auto_generate.
|
private |
Flag to auto generate a reproducer when it would otherwise be discarded.
Definition at line 153 of file Reproducer.h.
Referenced by IsAutoGenerate(), SetAutoGenerate(), and ~Generator().
|
private |
Flag to ensure that we never call both keep and discard.
Definition at line 150 of file Reproducer.h.
Referenced by Discard(), Keep(), and ~Generator().
|
private |
Map of provider IDs to provider instances.
Definition at line 143 of file Reproducer.h.
Referenced by AddProvidersToIndex(), Discard(), Get(), Keep(), and Register().
|
private |
Definition at line 144 of file Reproducer.h.
Referenced by Register().
|
private |
The reproducer root directory.
Definition at line 147 of file Reproducer.h.
Referenced by AddProvidersToIndex(), Create(), Discard(), and GetRoot().
|
private |
Definition at line 135 of file Reproducer.h.