LanguageClient: add logging to the manager

Change-Id: I953ffd8f281702c3032ce48cd620dcac983b5b25
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2021-11-09 15:12:04 +01:00
parent c8e4b32ee1
commit d511f1798a

View File

@@ -53,6 +53,8 @@ using namespace LanguageServerProtocol;
namespace LanguageClient { namespace LanguageClient {
static Q_LOGGING_CATEGORY(Log, "qtc.languageclient.manager", QtWarningMsg)
static LanguageClientManager *managerInstance = nullptr; static LanguageClientManager *managerInstance = nullptr;
LanguageClientManager::LanguageClientManager(QObject *parent) LanguageClientManager::LanguageClientManager(QObject *parent)
@@ -111,6 +113,7 @@ void LanguageClient::LanguageClientManager::addClient(Client *client)
if (managerInstance->m_clients.contains(client)) if (managerInstance->m_clients.contains(client))
return; return;
qCDebug(Log) << "add client: " << client->name() << client;
managerInstance->m_clients << client; managerInstance->m_clients << client;
connect(client, &Client::finished, managerInstance, [client]() { clientFinished(client); }); connect(client, &Client::finished, managerInstance, [client]() { clientFinished(client); });
connect(client, connect(client,
@@ -130,6 +133,7 @@ void LanguageClient::LanguageClientManager::addClient(Client *client)
void LanguageClientManager::clientStarted(Client *client) void LanguageClientManager::clientStarted(Client *client)
{ {
qCDebug(Log) << "client started: " << client->name() << client;
QTC_ASSERT(managerInstance, return); QTC_ASSERT(managerInstance, return);
QTC_ASSERT(client, return); QTC_ASSERT(client, return);
if (managerInstance->m_shuttingDown) if (managerInstance->m_shuttingDown)
@@ -150,6 +154,7 @@ void LanguageClientManager::clientFinished(Client *client)
const QList<TextEditor::TextDocument *> &clientDocs const QList<TextEditor::TextDocument *> &clientDocs
= managerInstance->m_clientForDocument.keys(client); = managerInstance->m_clientForDocument.keys(client);
if (client->reset()) { if (client->reset()) {
qCDebug(Log) << "restart unexpectedly finished client: " << client->name() << client;
client->disconnect(managerInstance); client->disconnect(managerInstance);
client->log( client->log(
tr("Unexpectedly finished. Restarting in %1 seconds.").arg(restartTimeoutS)); tr("Unexpectedly finished. Restarting in %1 seconds.").arg(restartTimeoutS));
@@ -158,6 +163,7 @@ void LanguageClientManager::clientFinished(Client *client)
client->deactivateDocument(document); client->deactivateDocument(document);
return; return;
} }
qCDebug(Log) << "client finished unexpectedly: " << client->name() << client;
client->log(tr("Unexpectedly finished.")); client->log(tr("Unexpectedly finished."));
for (TextEditor::TextDocument *document : clientDocs) for (TextEditor::TextDocument *document : clientDocs)
managerInstance->m_clientForDocument.remove(document); managerInstance->m_clientForDocument.remove(document);
@@ -174,6 +180,7 @@ Client *LanguageClientManager::startClient(BaseSettings *setting, ProjectExplore
QTC_ASSERT(setting, return nullptr); QTC_ASSERT(setting, return nullptr);
QTC_ASSERT(setting->isValid(), return nullptr); QTC_ASSERT(setting->isValid(), return nullptr);
Client *client = setting->createClient(project); Client *client = setting->createClient(project);
qCDebug(Log) << "start client: " << client->name() << client;
QTC_ASSERT(client, return nullptr); QTC_ASSERT(client, return nullptr);
client->start(); client->start();
managerInstance->m_clientsForSetting[setting->m_id].append(client); managerInstance->m_clientsForSetting[setting->m_id].append(client);
@@ -206,6 +213,7 @@ void LanguageClientManager::shutdownClient(Client *client)
{ {
if (!client) if (!client)
return; return;
qCDebug(Log) << "request client shutdown: " << client->name() << client;
// reset the documents for that client already when requesting the shutdown so they can get // reset the documents for that client already when requesting the shutdown so they can get
// reassigned to another server right after this request to another server // reassigned to another server right after this request to another server
for (TextEditor::TextDocument *document : managerInstance->m_clientForDocument.keys(client)) for (TextEditor::TextDocument *document : managerInstance->m_clientForDocument.keys(client))
@@ -220,6 +228,7 @@ void LanguageClientManager::deleteClient(Client *client)
{ {
QTC_ASSERT(managerInstance, return); QTC_ASSERT(managerInstance, return);
QTC_ASSERT(client, return); QTC_ASSERT(client, return);
qCDebug(Log) << "delete client: " << client->name() << client;
client->disconnect(); client->disconnect();
managerInstance->m_clients.removeAll(client); managerInstance->m_clients.removeAll(client);
for (QVector<Client *> &clients : managerInstance->m_clientsForSetting) for (QVector<Client *> &clients : managerInstance->m_clientsForSetting)
@@ -237,6 +246,7 @@ void LanguageClientManager::shutdown()
QTC_ASSERT(managerInstance, return); QTC_ASSERT(managerInstance, return);
if (managerInstance->m_shuttingDown) if (managerInstance->m_shuttingDown)
return; return;
qCDebug(Log) << "shutdown manager";
managerInstance->m_shuttingDown = true; managerInstance->m_shuttingDown = true;
for (Client *client : qAsConst(managerInstance->m_clients)) for (Client *client : qAsConst(managerInstance->m_clients))
shutdownClient(client); shutdownClient(client);
@@ -412,6 +422,7 @@ void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *doc
currentClient->deactivateDocument(document); currentClient->deactivateDocument(document);
managerInstance->m_clientForDocument[document] = client; managerInstance->m_clientForDocument[document] = client;
if (client) { if (client) {
qCDebug(Log) << "open" << document->filePath() << "with" << client->name() << client;
if (!client->documentOpen(document)) if (!client->documentOpen(document))
client->openDocument(document); client->openDocument(document);
else else