data: indexer processes

* TaskBuildIndex starts seperate indexer processes and communicates via shared memory
* indexer processes get restarted if they fail
* indexer processes are killed when the app closes or crashes
* added utility class SharedMemory to allocate and access shared memory, providing basic data structures
* added SharedMemoryGarbageCollector for keeping track of running instances and cleaning up shared memory in case of a crash
* show errors for source files that crashed during indexing
* added basic exception handling to task scheduling
* added option to turn off processes and use threads in preferences, but still use shared memory

fortune cookie message = Good news from someone dear is coming soon.
This commit is contained in:
Eberhard Graether
2017-05-04 15:50:59 +02:00
parent 9beea94fd8
commit 706119ebcc
109 changed files with 3351 additions and 1261 deletions
@@ -25,6 +25,18 @@ std::string IndexerCommandJava::getKindString() const
return getIndexerKindString();
}
size_t IndexerCommandJava::getByteSize() const
{
size_t size = IndexerCommand::getByteSize() + sizeof(*this);
for (auto i : m_classPath)
{
size += i.str().size();
}
return size;
}
std::vector<FilePath> IndexerCommandJava::getClassPath() const
{
return m_classPath;
@@ -20,7 +20,8 @@ public:
const std::vector<FilePath>& classPath);
virtual ~IndexerCommandJava();
std::string getKindString() const override;
virtual std::string getKindString() const override;
virtual size_t getByteSize() const override;
std::vector<FilePath> getClassPath() const;