summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/MetricsAdminI.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/MetricsAdminI.h')
-rw-r--r--cpp/src/Ice/MetricsAdminI.h88
1 files changed, 51 insertions, 37 deletions
diff --git a/cpp/src/Ice/MetricsAdminI.h b/cpp/src/Ice/MetricsAdminI.h
index 5215452d206..c3e86001fdd 100644
--- a/cpp/src/Ice/MetricsAdminI.h
+++ b/cpp/src/Ice/MetricsAdminI.h
@@ -17,12 +17,14 @@
namespace IceMX
{
-class ObjectObserverUpdater;
-typedef IceUtil::Handle<ObjectObserverUpdater> ObjectObserverUpdaterPtr;
+class Updater;
+typedef IceUtil::Handle<Updater> UpdaterPtr;
-class ObjectHelper;
+class MetricsHelper;
-class MetricsMap : public IceUtil::Shared, public IceUtil::Mutex
+typedef std::map<std::string, std::string> NameValueDict;
+
+class MetricsMapI : public IceUtil::Shared, public IceUtil::Mutex
{
public:
@@ -30,19 +32,19 @@ public:
{
public:
- Entry(MetricsMap* map, const MetricsObjectPtr& object) : _map(map), _object(object)
+ Entry(MetricsMapI* map, const MetricsPtr& object) : _map(map), _object(object)
{
}
- template<typename ObjectHelper, typename MetricsObjectPtrType> MetricsObjectPtrType
- attach(const ObjectHelper& helper)
+ template<typename MetricsHelper, typename MetricsPtrType> MetricsPtrType
+ attach(const MetricsHelper& helper)
{
IceUtil::Mutex::Lock sync(*this);
++_object->total;
++_object->current;
- MetricsObjectPtrType obj = MetricsObjectPtrType::dynamicCast(_object);
- helper.initMetricsObject(obj);
+ MetricsPtrType obj = MetricsPtrType::dynamicCast(_object);
+ helper.initMetrics(obj);
return obj;
}
@@ -64,20 +66,31 @@ public:
void failed(const std::string& exceptionName)
{
IceUtil::Mutex::Lock sync(*this);
- ++_object->failures[exceptionName];
+ ++_failures[exceptionName];
}
- MetricsObjectPtr
+ MetricsPtr
clone() const
{
IceUtil::Mutex::Lock sync(*this);
// TODO: Fix ice_clone to use a co-variant type.
- return dynamic_cast<MetricsObject*>(_object->ice_clone().get());
+ return dynamic_cast<Metrics*>(_object->ice_clone().get());
+ }
+
+ MetricsFailures
+ getFailures() const
+ {
+ MetricsFailures f;
+
+ IceUtil::Mutex::Lock sync(*this);
+ f.id = _object->id;
+ f.failures = _failures;
+ return f;
}
- template<typename Function, typename MetricsObjectType> void
- execute(Function func, const MetricsObjectType& obj)
+ template<typename Function, typename MetricsType> void
+ execute(Function func, const MetricsType& obj)
{
IceUtil::Mutex::Lock sync(*this);
func(obj);
@@ -96,16 +109,18 @@ public:
private:
- MetricsMap* _map;
- MetricsObjectPtr _object;
+ MetricsMapI* _map;
+ MetricsPtr _object;
+ StringIntDict _failures;
};
typedef IceUtil::Handle<Entry> EntryPtr;
- MetricsMap(const std::string&, int, const NameValueDict&, const NameValueDict&);
+ MetricsMapI(const std::string&, int, const NameValueDict&, const NameValueDict&);
- MetricsObjectSeq getMetricsObjects();
+ MetricsMap getMetrics();
+ MetricsFailuresSeq getFailures();
- EntryPtr getMatching(const ObjectHelper&);
+ EntryPtr getMatching(const MetricsHelper&);
private:
@@ -121,13 +136,13 @@ private:
std::map<std::string, EntryPtr> _objects;
std::deque<Entry*> _detachedQueue;
};
-typedef IceUtil::Handle<MetricsMap> MetricsMapPtr;
+typedef IceUtil::Handle<MetricsMapI> MetricsMapIPtr;
-class MetricsView : public IceUtil::Shared
+class MetricsViewI : public IceUtil::Shared
{
public:
- MetricsView();
+ MetricsViewI();
void setEnabled(bool enabled)
{
@@ -142,18 +157,19 @@ public:
void add(const std::string&, const std::string&, int, const NameValueDict&, const NameValueDict&);
void remove(const std::string&);
- MetricsObjectSeqDict getMetricsObjects();
+ MetricsView getMetrics();
+ MetricsFailuresSeq getFailures(const std::string&);
- MetricsMap::EntryPtr getMatching(const std::string&, const ObjectHelper&) const;
+ MetricsMapI::EntryPtr getMatching(const std::string&, const MetricsHelper&) const;
std::vector<std::string> getMaps() const;
private:
- std::map<std::string, MetricsMapPtr> _maps;
+ std::map<std::string, MetricsMapIPtr> _maps;
bool _enabled;
};
-typedef IceUtil::Handle<MetricsView> MetricsViewPtr;
+typedef IceUtil::Handle<MetricsViewI> MetricsViewIPtr;
class MetricsAdminI : public MetricsAdmin, public IceUtil::Mutex
{
@@ -161,26 +177,24 @@ public:
MetricsAdminI(::Ice::InitializationData&);
- std::vector<MetricsMap::EntryPtr> getMatching(const std::string&, const ObjectHelper&) const;
- void addUpdater(const std::string&, const ObjectObserverUpdaterPtr&);
+ std::vector<MetricsMapI::EntryPtr> getMatching(const std::string&, const MetricsHelper&) const;
+ void addUpdater(const std::string&, const UpdaterPtr&);
- virtual MetricsObjectSeqDict getMetricsMaps(const std::string&, const ::Ice::Current&);
- virtual MetricsObjectSeqDictDict getAllMetricsMaps(const ::Ice::Current&);
+ virtual Ice::StringSeq getMetricsViewNames(const ::Ice::Current&);
+ virtual MetricsView getMetricsView(const std::string&, const ::Ice::Current&);
+ virtual MetricsFailuresSeq getMetricsFailures(const std::string&, const std::string&, const ::Ice::Current&);
+
+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&);
- virtual void enableView(const std::string&, const ::Ice::Current&);
- virtual void disableView(const std::string&, const ::Ice::Current&);
-
-private:
-
void setViewEnabled(const std::string&, bool);
- std::map<std::string, MetricsViewPtr> _views;
- std::map<std::string, ObjectObserverUpdaterPtr> _updaters;
+ std::map<std::string, MetricsViewIPtr> _views;
+ std::map<std::string, UpdaterPtr> _updaters;
};
typedef IceUtil::Handle<MetricsAdminI> MetricsAdminIPtr;