summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/MetricsAdminI.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-08-10 16:50:35 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-08-10 16:50:35 +0200
commit1a8efa00ee1fcd474f85b71a3cd8b43b9819d58e (patch)
tree928ee2b9201ba70f8d8deb8bad46d1af6acdc1aa /cpp/src/Ice/MetricsAdminI.h
parentWindows fixes (diff)
downloadice-1a8efa00ee1fcd474f85b71a3cd8b43b9819d58e.tar.bz2
ice-1a8efa00ee1fcd474f85b71a3cd8b43b9819d58e.tar.xz
ice-1a8efa00ee1fcd474f85b71a3cd8b43b9819d58e.zip
Added regexp support for Accept/Reject
Diffstat (limited to 'cpp/src/Ice/MetricsAdminI.h')
-rw-r--r--cpp/src/Ice/MetricsAdminI.h42
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;