diff options
Diffstat (limited to 'cpp/src/Ice/MetricsAdminI.h')
-rw-r--r-- | cpp/src/Ice/MetricsAdminI.h | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/cpp/src/Ice/MetricsAdminI.h b/cpp/src/Ice/MetricsAdminI.h index 3cf635b41a0..8609dc6a42f 100644 --- a/cpp/src/Ice/MetricsAdminI.h +++ b/cpp/src/Ice/MetricsAdminI.h @@ -14,6 +14,16 @@ #include <Ice/Properties.h> #include <Ice/Initialize.h> +#ifdef _MSC_VER +# define ICE_CPP11_REGEXP +#endif + +#ifdef ICE_CPP11_REGEXP +# include <regex> +#else +# include <regex.h> +#endif + namespace IceMX { @@ -23,12 +33,29 @@ typedef IceUtil::Handle<Updater> UpdaterPtr; class MetricsHelper; template<typename T> class MetricsHelperT; -typedef std::map<std::string, std::string> NameValueDict; - class MetricsMapI : public IceUtil::Shared, public IceUtil::Mutex { public: + class RegExp : public IceUtil::Shared + { + public: + + RegExp(const std::string&, const std::string&); + ~RegExp(); + + bool match(const MetricsHelper&); + + private: + const std::string _attribute; +#ifdef ICE_CPP11_REGEXP + std::regex _regex; +#else + regex_t _preg; +#endif + }; + typedef IceUtil::Handle<RegExp> RegExpPtr; + class Entry : public Ice::LocalObject, public IceUtil::Mutex { public: @@ -149,8 +176,8 @@ private: std::vector<std::string> _groupByAttributes; std::vector<std::string> _groupBySeparators; const int _retain; - const NameValueDict _accept; - const NameValueDict _reject; + const std::vector<RegExpPtr> _accept; + const std::vector<RegExpPtr> _reject; std::map<std::string, EntryPtr> _objects; std::deque<Entry*> _detachedQueue; @@ -308,13 +335,6 @@ public: private: - virtual void addMapToView(const std::string&, const std::string&, const std::string&, int, const NameValueDict&, - const NameValueDict&, const ::Ice::Current& = ::Ice::Current()); - - virtual void removeMapFromView(const std::string&, const std::string&, const ::Ice::Current&); - - void setViewEnabled(const std::string&, bool); - std::map<std::string, MetricsViewIPtr> _views; std::map<std::string, UpdaterPtr> _updaters; std::map<std::string, MetricsMapFactoryPtr> _factories; |