diff options
10 files changed, 74 insertions, 29 deletions
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<ClangCodeModelClientInterface> +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 <typename ClientType> +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 <typename ClientInterface> 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<PchManagerClientInterface> +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<RefactoringClientInterface> +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 <clangcodemodelserverinterface.h> +#include <ipcclientprovider.h> #include <utf8string.h> #include <QScopedPointer> @@ -42,7 +42,8 @@ namespace ClangBackEnd { -class ClangCodeModelServer : public ClangCodeModelServerInterface +class ClangCodeModelServer : public ClangCodeModelServerInterface, + public IpcClientProvider<ClangCodeModelClientInterface> { 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 <ipcclientprovider.h> + namespace ClangBackEnd { class SourceRangesAndDiagnosticsForQueryMessage; class PchManagerServer : public PchManagerServerInterface, public ClangPathWatcherNotifier, - public PchGeneratorNotifierInterface + public PchGeneratorNotifierInterface, + public IpcClientProvider<PchManagerClientInterface> + { public: PchManagerServer(StringCache<Utils::PathString> &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 <refactoringserverinterface.h> #include <QTimer> +#include <ipcclientprovider.h> #include <stringcache.h> #include <utils/smallstring.h> @@ -46,7 +47,8 @@ namespace V2 { class FileContainer; } -class RefactoringServer : public RefactoringServerInterface +class RefactoringServer : public RefactoringServerInterface, + public IpcClientProvider<RefactoringClientInterface> { using Future = std::future<SourceRangesForQueryMessage>; 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 <clangbackendipc/clangcodemodelserverinterface.h> +#include <ipcclientprovider.h> namespace ClangBackEnd { -class EchoClangCodeModelServer : public ClangCodeModelServerInterface +class EchoClangCodeModelServer : public ClangCodeModelServerInterface, + public IpcClientProvider<ClangCodeModelClientInterface> { public: void dispatch(const MessageEnvelop &message) override; |