Clang: Remove IpcSenderInterface

Change-Id: I005ab86d0967b439421a217556a39f2416976f20
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Nikolai Kosjar
2017-09-25 14:00:24 +02:00
parent 576ae5e132
commit e99b86e8ca
2 changed files with 65 additions and 73 deletions

View File

@@ -313,125 +313,111 @@ void IpcReceiver::followSymbol(const ClangBackEnd::FollowSymbolMessage &message)
futureInterface.reportFinished(); futureInterface.reportFinished();
} }
class IpcSender : public IpcSenderInterface IpcSender::IpcSender(ClangCodeModelConnectionClient *connectionClient)
{
public:
IpcSender(ClangBackEnd::ClangCodeModelConnectionClient &connectionClient)
: m_connection(connectionClient) : m_connection(connectionClient)
{} {}
void end() override;
void registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &message) override;
void updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &message) override;
void unregisterTranslationUnitsForEditor(const ClangBackEnd::UnregisterTranslationUnitsForEditorMessage &message) override;
void registerProjectPartsForEditor(const ClangBackEnd::RegisterProjectPartsForEditorMessage &message) override;
void unregisterProjectPartsForEditor(const ClangBackEnd::UnregisterProjectPartsForEditorMessage &message) override;
void registerUnsavedFilesForEditor(const ClangBackEnd::RegisterUnsavedFilesForEditorMessage &message) override;
void unregisterUnsavedFilesForEditor(const ClangBackEnd::UnregisterUnsavedFilesForEditorMessage &message) override;
void completeCode(const ClangBackEnd::CompleteCodeMessage &message) override;
void requestDocumentAnnotations(const ClangBackEnd::RequestDocumentAnnotationsMessage &message) override;
void requestReferences(const ClangBackEnd::RequestReferencesMessage &message) override;
void requestFollowSymbol(const ClangBackEnd::RequestFollowSymbolMessage &message) override;
void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) override;
private:
ClangBackEnd::ClangCodeModelConnectionClient &m_connection;
};
void IpcSender::end() void IpcSender::end()
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << ClangBackEnd::EndMessage(); qCDebug(log) << ">>>" << ClangBackEnd::EndMessage();
m_connection.sendEndMessage(); m_connection->sendEndMessage();
} }
void IpcSender::registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) void IpcSender::registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().registerTranslationUnitsForEditor(message); m_connection->serverProxy().registerTranslationUnitsForEditor(message);
} }
void IpcSender::updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) void IpcSender::updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().updateTranslationUnitsForEditor(message); m_connection->serverProxy().updateTranslationUnitsForEditor(message);
} }
void IpcSender::unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) void IpcSender::unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().unregisterTranslationUnitsForEditor(message); m_connection->serverProxy().unregisterTranslationUnitsForEditor(message);
} }
void IpcSender::registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) void IpcSender::registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().registerProjectPartsForEditor(message); m_connection->serverProxy().registerProjectPartsForEditor(message);
} }
void IpcSender::unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) void IpcSender::unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().unregisterProjectPartsForEditor(message); m_connection->serverProxy().unregisterProjectPartsForEditor(message);
} }
void IpcSender::registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) void IpcSender::registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().registerUnsavedFilesForEditor(message); m_connection->serverProxy().registerUnsavedFilesForEditor(message);
} }
void IpcSender::unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) void IpcSender::unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().unregisterUnsavedFilesForEditor(message); m_connection->serverProxy().unregisterUnsavedFilesForEditor(message);
} }
void IpcSender::completeCode(const CompleteCodeMessage &message) void IpcSender::completeCode(const CompleteCodeMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().completeCode(message); m_connection->serverProxy().completeCode(message);
} }
void IpcSender::requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) void IpcSender::requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().requestDocumentAnnotations(message); m_connection->serverProxy().requestDocumentAnnotations(message);
} }
void IpcSender::requestReferences(const RequestReferencesMessage &message) void IpcSender::requestReferences(const RequestReferencesMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().requestReferences(message); m_connection->serverProxy().requestReferences(message);
} }
void IpcSender::requestFollowSymbol(const RequestFollowSymbolMessage &message) void IpcSender::requestFollowSymbol(const RequestFollowSymbolMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().requestFollowSymbol(message); m_connection->serverProxy().requestFollowSymbol(message);
} }
void IpcSender::updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) void IpcSender::updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message)
{ {
QTC_CHECK(m_connection.isConnected()); QTC_CHECK(m_connection->isConnected());
qCDebug(log) << ">>>" << message; qCDebug(log) << ">>>" << message;
m_connection.serverProxy().updateVisibleTranslationUnits(message); m_connection->serverProxy().updateVisibleTranslationUnits(message);
} }
class DummyIpcSender : public IpcSenderInterface bool IpcSender::isConnected() const
{
return m_connection && m_connection->isConnected();
}
class DummyIpcSender : public IpcSender
{ {
public: public:
DummyIpcSender() : IpcSender(nullptr) {}
void end() override {} void end() override {}
void registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &) override {} void registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &) override {}
void updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &) override {} void updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &) override {}
@@ -451,7 +437,7 @@ enum { backEndStartTimeOutInMs = 10000 };
IpcCommunicator::IpcCommunicator() IpcCommunicator::IpcCommunicator()
: m_connection(&m_ipcReceiver) : m_connection(&m_ipcReceiver)
, m_ipcSender(new DummyIpcSender) , m_ipcSender(new DummyIpcSender())
{ {
m_backendStartTimeOut.setSingleShot(true); m_backendStartTimeOut.setSingleShot(true);
connect(&m_backendStartTimeOut, &QTimer::timeout, connect(&m_backendStartTimeOut, &QTimer::timeout,
@@ -804,7 +790,7 @@ void IpcCommunicator::onConnectedToBackend()
logRestartedDueToUnexpectedFinish(); logRestartedDueToUnexpectedFinish();
m_ipcReceiver.reset(); m_ipcReceiver.reset();
m_ipcSender.reset(new IpcSender(m_connection)); m_ipcSender.reset(new IpcSender(&m_connection));
initializeBackendWithCurrentData(); initializeBackendWithCurrentData();
} }
@@ -869,9 +855,9 @@ void IpcCommunicator::initializeBackendWithCurrentData()
emit backendReinitialized(); emit backendReinitialized();
} }
IpcSenderInterface *IpcCommunicator::setIpcSender(IpcSenderInterface *ipcSender) IpcSender *IpcCommunicator::setIpcSender(IpcSender *ipcSender)
{ {
IpcSenderInterface *previousMessageSender = m_ipcSender.take(); IpcSender *previousMessageSender = m_ipcSender.take();
m_ipcSender.reset(ipcSender); m_ipcSender.reset(ipcSender);
return previousMessageSender; return previousMessageSender;
} }

View File

@@ -115,24 +115,30 @@ private:
QHash<quint64, QFutureInterface<CppTools::SymbolInfo>> m_followTable; QHash<quint64, QFutureInterface<CppTools::SymbolInfo>> m_followTable;
}; };
class IpcSenderInterface class IpcSender : public ClangBackEnd::ClangCodeModelServerInterface
{ {
public: public:
virtual ~IpcSenderInterface() {} IpcSender(ClangBackEnd::ClangCodeModelConnectionClient *connectionClient);
virtual void end() = 0; void end() override;
virtual void registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &message) = 0; void registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &message) override;
virtual void updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &message) = 0; void updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &message) override;
virtual void unregisterTranslationUnitsForEditor(const ClangBackEnd::UnregisterTranslationUnitsForEditorMessage &message) = 0; void unregisterTranslationUnitsForEditor(const ClangBackEnd::UnregisterTranslationUnitsForEditorMessage &message) override;
virtual void registerProjectPartsForEditor(const ClangBackEnd::RegisterProjectPartsForEditorMessage &message) = 0; void registerProjectPartsForEditor(const ClangBackEnd::RegisterProjectPartsForEditorMessage &message) override;
virtual void unregisterProjectPartsForEditor(const ClangBackEnd::UnregisterProjectPartsForEditorMessage &message) = 0; void unregisterProjectPartsForEditor(const ClangBackEnd::UnregisterProjectPartsForEditorMessage &message) override;
virtual void registerUnsavedFilesForEditor(const ClangBackEnd::RegisterUnsavedFilesForEditorMessage &message) = 0; void registerUnsavedFilesForEditor(const ClangBackEnd::RegisterUnsavedFilesForEditorMessage &message) override;
virtual void unregisterUnsavedFilesForEditor(const ClangBackEnd::UnregisterUnsavedFilesForEditorMessage &message) = 0; void unregisterUnsavedFilesForEditor(const ClangBackEnd::UnregisterUnsavedFilesForEditorMessage &message) override;
virtual void completeCode(const ClangBackEnd::CompleteCodeMessage &message) = 0; void completeCode(const ClangBackEnd::CompleteCodeMessage &message) override;
virtual void requestDocumentAnnotations(const ClangBackEnd::RequestDocumentAnnotationsMessage &message) = 0; void requestDocumentAnnotations(const ClangBackEnd::RequestDocumentAnnotationsMessage &message) override;
virtual void requestReferences(const ClangBackEnd::RequestReferencesMessage &message) = 0; void requestReferences(const ClangBackEnd::RequestReferencesMessage &message) override;
virtual void requestFollowSymbol(const ClangBackEnd::RequestFollowSymbolMessage &message) = 0; void requestFollowSymbol(const ClangBackEnd::RequestFollowSymbolMessage &message) override;
virtual void updateVisibleTranslationUnits(const ClangBackEnd::UpdateVisibleTranslationUnitsMessage &message) = 0; void updateVisibleTranslationUnits(const ClangBackEnd::UpdateVisibleTranslationUnitsMessage &message) override;
private:
bool isConnected() const;
private:
ClangBackEnd::ClangCodeModelConnectionClient *m_connection = nullptr;
}; };
class IpcCommunicator : public QObject class IpcCommunicator : public QObject
@@ -193,7 +199,7 @@ public:
bool isNotWaitingForCompletion() const; bool isNotWaitingForCompletion() const;
public: // for tests public: // for tests
IpcSenderInterface *setIpcSender(IpcSenderInterface *ipcSender); IpcSender *setIpcSender(IpcSender *ipcSender);
void killBackendProcess(); void killBackendProcess();
signals: // for tests signals: // for tests
@@ -226,7 +232,7 @@ private:
IpcReceiver m_ipcReceiver; IpcReceiver m_ipcReceiver;
ClangBackEnd::ClangCodeModelConnectionClient m_connection; ClangBackEnd::ClangCodeModelConnectionClient m_connection;
QTimer m_backendStartTimeOut; QTimer m_backendStartTimeOut;
QScopedPointer<IpcSenderInterface> m_ipcSender; QScopedPointer<IpcSender> m_ipcSender;
int m_connectedCount = 0; int m_connectedCount = 0;
}; };