NullFilter capabilities are now instance specific

There can now in one configuration be multiple Null filters,
each with its own set of capabilities.
This commit is contained in:
Johan Wikman
2017-02-14 13:43:48 +02:00
parent 2a49cd6451
commit 3a3b31ebb4
2 changed files with 8 additions and 28 deletions

View File

@ -36,16 +36,6 @@ MXS_ENUM_VALUE capability_values[] =
{ NULL, 0 } { NULL, 0 }
}; };
struct unit_variables
{
uint64_t capabilities;
bool capabilities_set;
} this_unit =
{
0,
false
};
} }
// //
@ -81,7 +71,8 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
// NullFilter // NullFilter
// //
NullFilter::NullFilter(const char* zName) NullFilter::NullFilter(const char* zName, uint64_t capabilities)
: m_capabilities(capabilities)
{ {
MXS_NOTICE("Null filter [%s] created.", zName); MXS_NOTICE("Null filter [%s] created.", zName);
} }
@ -97,16 +88,7 @@ NullFilter* NullFilter::create(const char* zName, char**, MXS_CONFIG_PARAMETER*
uint64_t capabilities = config_get_enum(pParams, CAPABILITIES_PARAM, capability_values); uint64_t capabilities = config_get_enum(pParams, CAPABILITIES_PARAM, capability_values);
if (this_unit.capabilities_set) return new NullFilter(zName, capabilities);
{
MXS_WARNING("The capabilities reported by NullFilter are currently global, "
"and not specific for a particular NullFilter instance.");
}
this_unit.capabilities = capabilities;
this_unit.capabilities_set = true;
return new NullFilter(zName);
} }
@ -123,10 +105,5 @@ void NullFilter::diagnostics(DCB* pDcb)
uint64_t NullFilter::getCapabilities() uint64_t NullFilter::getCapabilities()
{ {
if (!this_unit.capabilities_set) return m_capabilities;
{
MXS_ERROR("getCapabilities() called before they have been set.");
}
return this_unit.capabilities;
} }

View File

@ -29,8 +29,11 @@ public:
uint64_t getCapabilities(); uint64_t getCapabilities();
private: private:
NullFilter(const char* zName); NullFilter(const char* zName, uint64_t m_capabilities);
NullFilter(const NullFilter&); NullFilter(const NullFilter&);
NullFilter& operator = (const NullFilter&); NullFilter& operator = (const NullFilter&);
private:
uint64_t m_capabilities;
}; };