CodeAssist: Support asynchronous processing without threads

This is required for the CodemodelBackendIPC integration in the
ClangCodeModelPlugin. Since the heavy calculation happens in a separate
process, we only need to send appropriate requests and receive results
for a working completion. However, the CodeAssist API does not fit here
since it only provides means of caculating the results in the main
thread or a worker thread. We can't use the worker thread approach since
that would lead to threading issues regarding QLocalSocket in
CodemodelBackendIPC.

IAssistProcessor::setAsyncProposalAvailable() will hand the results
back to CodeAssist in order to display them.

Change-Id: I496192560fb406ec40fa8bcb7904f7a03d2eef50
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2015-04-30 11:58:20 +02:00
parent 7050f78b8d
commit e661a9c19e
14 changed files with 87 additions and 26 deletions

View File

@@ -208,9 +208,9 @@ bool VirtualFunctionAssistProvider::configure(const Parameters &parameters)
return true;
}
bool VirtualFunctionAssistProvider::isAsynchronous() const
IAssistProvider::RunType VirtualFunctionAssistProvider::runType() const
{
return true;
return AsynchronousWithThread;
}
bool VirtualFunctionAssistProvider::supportsEditor(Core::Id editorId) const