Clang: Add job queue for each document

...in preparation for follow-up changes. This will enable e.g. a timer
per document.

This does not change any behavior yet.

Change-Id: Ic1dc06de602373c666d47ce7a95ab99e56d389d5
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Nikolai Kosjar
2016-09-08 15:49:54 +02:00
parent b64bb0a7e3
commit c12d01fb41
18 changed files with 771 additions and 43 deletions

View File

@@ -31,8 +31,9 @@
#include "projects.h"
#include "clangdocument.h"
#include "clangdocuments.h"
#include "clangdocumentprocessors.h"
#include "clangjobrequest.h"
#include "unsavedfiles.h"
#include "clangjobs.h"
#include <utf8string.h>
@@ -58,14 +59,15 @@ public:
void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) override;
void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) override;
public /*for tests*/:
public: // for tests
const Documents &documentsForTestOnly() const;
const Jobs &jobsForTestOnly();
QList<Jobs::RunningJob> runningJobsForTestsOnly();
int queueSizeForTestsOnly();
bool isTimerRunningForTestOnly() const;
void setUpdateDocumentAnnotationsTimeOutInMsForTestsOnly(int value);
private:
Jobs &jobs();
DocumentProcessors &documentProcessors();
void startDocumentAnnotationsTimerIfFileIsNotOpenAsDocument(const Utf8String &filePath);
void addJobRequestsForDirtyAndVisibleDocuments();
@@ -78,7 +80,8 @@ private:
ProjectParts projects;
UnsavedFiles unsavedFiles;
Documents documents;
QScopedPointer<Jobs> jobs_;
QScopedPointer<DocumentProcessors> documentProcessors_; // Delayed initialization
QTimer updateDocumentAnnotationsTimer;
int updateDocumentAnnotationsTimeOutInMs;