From 604502e1cb1abffbdb412afc98b31ecd06bd2be8 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 20 Nov 2017 11:33:36 +0200 Subject: [PATCH] MXS-1461 Template Module -> class Module + template SpecificModule --- .../dbfwfilter/test/maxscale/filtermodule.hh | 4 +-- .../filter/dbfwfilter/test/maxscale/module.hh | 25 ++++++++----------- .../test/maxscale/queryclassifiermodule.hh | 4 +-- .../modules/filter/dbfwfilter/test/module.cc | 10 ++++---- .../filter/dbfwfilter/test/test_dbfwfilter.cc | 8 +++--- 5 files changed, 24 insertions(+), 27 deletions(-) diff --git a/server/modules/filter/dbfwfilter/test/maxscale/filtermodule.hh b/server/modules/filter/dbfwfilter/test/maxscale/filtermodule.hh index 4175ed84a..a5fd0aeed 100644 --- a/server/modules/filter/dbfwfilter/test/maxscale/filtermodule.hh +++ b/server/modules/filter/dbfwfilter/test/maxscale/filtermodule.hh @@ -23,7 +23,7 @@ namespace maxscale /** * An instance of FilterModule represents a filter module. */ -class FilterModule : public Module +class FilterModule : public SpecificModule { FilterModule(const FilterModule&); FilterModule& operator = (const FilterModule&); @@ -184,7 +184,7 @@ private: } private: - friend class Module; + friend class SpecificModule; FilterModule(MXS_FILTER_OBJECT* pApi) : m_pApi(pApi) diff --git a/server/modules/filter/dbfwfilter/test/maxscale/module.hh b/server/modules/filter/dbfwfilter/test/maxscale/module.hh index 2b8a3e079..a64a53606 100644 --- a/server/modules/filter/dbfwfilter/test/maxscale/module.hh +++ b/server/modules/filter/dbfwfilter/test/maxscale/module.hh @@ -19,18 +19,10 @@ namespace maxscale { /** - * The template Module is an abstraction for a MaxScale module, to - * be used as the base class of a concrete module. + * The class Module is an abstraction for a MaxScale module, to + * be used as the base class of a specific module. */ -template -class Module; - -/** - * The template specialization Module provides functionality common - * to all modules. - */ -template <> -class Module +class Module { public: /** @@ -74,7 +66,7 @@ public: * The template Module is intended to be derived from using the derived * class as template argument. * - * class XyzModule : public Module { ... } + * class XyzModule : public SpecificModule { ... } * * @param zFile_name The name of the module. * @@ -82,14 +74,14 @@ public: * the expected type. */ template -class Module +class SpecificModule : public Module { public: static std::auto_ptr load(const char* zFile_name) { std::auto_ptr sT; - void* pApi = Module::load(zFile_name, T::zName); + void* pApi = Module::load(zFile_name, T::zName); if (pApi) { @@ -98,6 +90,11 @@ public: return sT; } + +protected: + SpecificModule() + { + } }; } diff --git a/server/modules/filter/dbfwfilter/test/maxscale/queryclassifiermodule.hh b/server/modules/filter/dbfwfilter/test/maxscale/queryclassifiermodule.hh index c6d08b50e..f27b9373f 100644 --- a/server/modules/filter/dbfwfilter/test/maxscale/queryclassifiermodule.hh +++ b/server/modules/filter/dbfwfilter/test/maxscale/queryclassifiermodule.hh @@ -24,7 +24,7 @@ namespace maxscale * A QueryClassfierModule instance is an abstraction for a query * classifier module. */ -class QueryClassifierModule : public Module +class QueryClassifierModule : public SpecificModule { QueryClassifierModule(const QueryClassifierModule&); QueryClassifierModule& operator = (const QueryClassifierModule&); @@ -34,7 +34,7 @@ public: typedef QUERY_CLASSIFIER type_t; /*< The type of the module object. */ private: - friend class Module; + friend class SpecificModule; QueryClassifierModule(QUERY_CLASSIFIER* pApi) : m_pApi(pApi) diff --git a/server/modules/filter/dbfwfilter/test/module.cc b/server/modules/filter/dbfwfilter/test/module.cc index 587748670..6a6d3b0a4 100644 --- a/server/modules/filter/dbfwfilter/test/module.cc +++ b/server/modules/filter/dbfwfilter/test/module.cc @@ -18,13 +18,13 @@ namespace maxscale { //static -void* Module::load(const char* zName, const char* zType) +void* Module::load(const char* zName, const char* zType) { return load_module(zName, zType); } //static -bool Module::process_init() +bool Module::process_init() { bool initialized = false; @@ -69,7 +69,7 @@ bool Module::process_init() } //static -void Module::process_finish() +void Module::process_finish() { MXS_MODULE_ITERATOR i = mxs_module_iterator_get(NULL); MXS_MODULE* module = NULL; @@ -84,7 +84,7 @@ void Module::process_finish() } //static -bool Module::thread_init() +bool Module::thread_init() { bool initialized = false; @@ -129,7 +129,7 @@ bool Module::thread_init() } //static -void Module::thread_finish() +void Module::thread_finish() { MXS_MODULE_ITERATOR i = mxs_module_iterator_get(NULL); MXS_MODULE* module = NULL; diff --git a/server/modules/filter/dbfwfilter/test/test_dbfwfilter.cc b/server/modules/filter/dbfwfilter/test/test_dbfwfilter.cc index 7f0042b37..9478189bd 100644 --- a/server/modules/filter/dbfwfilter/test/test_dbfwfilter.cc +++ b/server/modules/filter/dbfwfilter/test/test_dbfwfilter.cc @@ -927,9 +927,9 @@ int run() if (sModule.get()) { - if (maxscale::Module::process_init()) + if (maxscale::Module::process_init()) { - if (maxscale::Module::thread_init()) + if (maxscale::Module::thread_init()) { rv = 0; rv += test(*sModule.get()); @@ -939,14 +939,14 @@ int run() rv += test_on_queries(*sModule.get()); } - maxscale::Module::thread_finish(); + maxscale::Module::thread_finish(); } else { cerr << "error: Could not perform thread initialization." << endl; } - maxscale::Module::process_finish(); + maxscale::Module::process_finish(); } else {