From b725018e9e32ead4c2491b4fb13a472b6e79360c Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 24 Aug 2017 15:22:37 +0200 Subject: Clang: Cleanup interface hierarchy The server and client interfaces was tightly coupled.So it prevented the introduction of immediate interfaces. Change-Id: Ie4197ffddb862e076d080b3d2a5ee869fad9e4d0 Reviewed-by: Nikolai Kosjar --- src/libs/clangbackendipc/clangbackendipc-lib.pri | 3 +- .../clangcodemodelserverinterface.h | 2 +- src/libs/clangbackendipc/ipcclientprovider.h | 53 ++++++++++++++++++++++ src/libs/clangbackendipc/ipcserverinterface.h | 19 -------- .../clangbackendipc/pchmanagerserverinterface.h | 2 +- .../clangbackendipc/refactoringserverinterface.h | 3 +- .../clangbackend/ipcsource/clangcodemodelserver.h | 7 +-- .../source/pchmanagerserver.h | 6 ++- .../source/refactoringserver.h | 4 +- tests/unit/echoserver/echoclangcodemodelserver.h | 4 +- 10 files changed, 74 insertions(+), 29 deletions(-) create mode 100644 src/libs/clangbackendipc/ipcclientprovider.h diff --git a/src/libs/clangbackendipc/clangbackendipc-lib.pri b/src/libs/clangbackendipc/clangbackendipc-lib.pri index c9aa23d82b..35677f9418 100644 --- a/src/libs/clangbackendipc/clangbackendipc-lib.pri +++ b/src/libs/clangbackendipc/clangbackendipc-lib.pri @@ -170,6 +170,7 @@ HEADERS += \ $$PWD/updatepchprojectpartsmessage.h \ $$PWD/updatetranslationunitsforeditormessage.h \ $$PWD/updatevisibletranslationunitsmessage.h \ - $$PWD/writemessageblock.h + $$PWD/writemessageblock.h \ + $$PWD/ipcclientprovider.h contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols diff --git a/src/libs/clangbackendipc/clangcodemodelserverinterface.h b/src/libs/clangbackendipc/clangcodemodelserverinterface.h index 9e8dbd3084..e5b2956edd 100644 --- a/src/libs/clangbackendipc/clangcodemodelserverinterface.h +++ b/src/libs/clangbackendipc/clangcodemodelserverinterface.h @@ -33,7 +33,7 @@ namespace ClangBackEnd { class ClangCodeModelClientInterface; -class CMBIPC_EXPORT ClangCodeModelServerInterface : public IpcServerInterface +class CMBIPC_EXPORT ClangCodeModelServerInterface : public IpcServerInterface { public: void dispatch(const MessageEnvelop &messageEnvelop) override; diff --git a/src/libs/clangbackendipc/ipcclientprovider.h b/src/libs/clangbackendipc/ipcclientprovider.h new file mode 100644 index 0000000000..a4bcb7705c --- /dev/null +++ b/src/libs/clangbackendipc/ipcclientprovider.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +namespace ClangBackEnd { + +template +class IpcClientProvider +{ +public: + void setClient(ClientType *client) + { + client_ = client; + } + + void resetClient() + { + client_ = nullptr; + } + + ClientType *client() + { + return client_; + } + +private: + ClientType *client_; +}; + +} // namespace ClangBackEnd diff --git a/src/libs/clangbackendipc/ipcserverinterface.h b/src/libs/clangbackendipc/ipcserverinterface.h index 87caf34c88..d78176ece0 100644 --- a/src/libs/clangbackendipc/ipcserverinterface.h +++ b/src/libs/clangbackendipc/ipcserverinterface.h @@ -29,27 +29,8 @@ namespace ClangBackEnd { -template class IpcServerInterface : public IpcInterface { -public: - void setClient(ClientInterface *client) - { - client_ = client; - } - - void resetClient() - { - client_ = nullptr; - } - - ClientInterface *client() - { - return client_; - } - -private: - ClientInterface *client_; }; } // namespace ClangBackEnd diff --git a/src/libs/clangbackendipc/pchmanagerserverinterface.h b/src/libs/clangbackendipc/pchmanagerserverinterface.h index a4a8ed683d..58ce649997 100644 --- a/src/libs/clangbackendipc/pchmanagerserverinterface.h +++ b/src/libs/clangbackendipc/pchmanagerserverinterface.h @@ -36,7 +36,7 @@ class RemovePchProjectPartsMessage; class UpdatePchProjectPartsMessage; -class CMBIPC_EXPORT PchManagerServerInterface : public IpcServerInterface +class CMBIPC_EXPORT PchManagerServerInterface : public IpcServerInterface { public: void dispatch(const MessageEnvelop &messageEnvelop) override; diff --git a/src/libs/clangbackendipc/refactoringserverinterface.h b/src/libs/clangbackendipc/refactoringserverinterface.h index c4a8ec6195..8c36a7351e 100644 --- a/src/libs/clangbackendipc/refactoringserverinterface.h +++ b/src/libs/clangbackendipc/refactoringserverinterface.h @@ -37,7 +37,8 @@ class RequestSourceRangesAndDiagnosticsForQueryMessage; class RequestSourceRangesForQueryMessage; class CancelMessage; -class CMBIPC_EXPORT RefactoringServerInterface : public IpcServerInterface +class CMBIPC_EXPORT RefactoringServerInterface : public IpcServerInterface + { public: void dispatch(const MessageEnvelop &messageEnvelop) override; diff --git a/src/tools/clangbackend/ipcsource/clangcodemodelserver.h b/src/tools/clangbackend/ipcsource/clangcodemodelserver.h index b6c5619d8d..5e9e2934a6 100644 --- a/src/tools/clangbackend/ipcsource/clangcodemodelserver.h +++ b/src/tools/clangbackend/ipcsource/clangcodemodelserver.h @@ -25,8 +25,6 @@ #pragma once -#include "clangcodemodelserverinterface.h" - #include "projectpart.h" #include "projects.h" #include "clangdocument.h" @@ -35,6 +33,8 @@ #include "clangjobrequest.h" #include "unsavedfiles.h" +#include +#include #include #include @@ -42,7 +42,8 @@ namespace ClangBackEnd { -class ClangCodeModelServer : public ClangCodeModelServerInterface +class ClangCodeModelServer : public ClangCodeModelServerInterface, + public IpcClientProvider { public: ClangCodeModelServer(); diff --git a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h index e28a3658e2..b9df33f8b9 100644 --- a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h +++ b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h @@ -33,13 +33,17 @@ #include "projectpartsinterface.h" #include "stringcache.h" +#include + namespace ClangBackEnd { class SourceRangesAndDiagnosticsForQueryMessage; class PchManagerServer : public PchManagerServerInterface, public ClangPathWatcherNotifier, - public PchGeneratorNotifierInterface + public PchGeneratorNotifierInterface, + public IpcClientProvider + { public: PchManagerServer(StringCache &filePathCache, diff --git a/src/tools/clangrefactoringbackend/source/refactoringserver.h b/src/tools/clangrefactoringbackend/source/refactoringserver.h index 94eeb3dcc6..d988ea5b80 100644 --- a/src/tools/clangrefactoringbackend/source/refactoringserver.h +++ b/src/tools/clangrefactoringbackend/source/refactoringserver.h @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -46,7 +47,8 @@ namespace V2 { class FileContainer; } -class RefactoringServer : public RefactoringServerInterface +class RefactoringServer : public RefactoringServerInterface, + public IpcClientProvider { using Future = std::future; public: diff --git a/tests/unit/echoserver/echoclangcodemodelserver.h b/tests/unit/echoserver/echoclangcodemodelserver.h index 32696c24d1..7704283d5b 100644 --- a/tests/unit/echoserver/echoclangcodemodelserver.h +++ b/tests/unit/echoserver/echoclangcodemodelserver.h @@ -26,10 +26,12 @@ #pragma once #include +#include namespace ClangBackEnd { -class EchoClangCodeModelServer : public ClangCodeModelServerInterface +class EchoClangCodeModelServer : public ClangCodeModelServerInterface, + public IpcClientProvider { public: void dispatch(const MessageEnvelop &message) override; -- cgit v1.2.1