summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/MetricsAdminI.cpp37
-rw-r--r--cpp/src/Ice/MetricsAdminI.h7
2 files changed, 42 insertions, 2 deletions
diff --git a/cpp/src/Ice/MetricsAdminI.cpp b/cpp/src/Ice/MetricsAdminI.cpp
index 30f59eed52a..c300a169cf3 100644
--- a/cpp/src/Ice/MetricsAdminI.cpp
+++ b/cpp/src/Ice/MetricsAdminI.cpp
@@ -157,6 +157,18 @@ MetricsMapI::getFailures()
return failures;
}
+MetricsFailures
+MetricsMapI::getFailures(const string& id)
+{
+ Lock sync(*this);
+ map<string, EntryPtr>::const_iterator p = _objects.begin();
+ if(p != _objects.end())
+ {
+ return p->second->getFailures();
+ }
+ return MetricsFailures();
+}
+
MetricsMapI::EntryPtr
MetricsMapI::getMatching(const MetricsHelper& helper)
{
@@ -275,6 +287,17 @@ MetricsViewI::getFailures(const string& mapName)
return MetricsFailuresSeq();
}
+MetricsFailures
+MetricsViewI::getFailures(const string& mapName, const string& id)
+{
+ map<string, MetricsMapIPtr>::const_iterator p = _maps.find(mapName);
+ if(p != _maps.end())
+ {
+ return p->second->getFailures(id);
+ }
+ return MetricsFailures();
+}
+
MetricsMapI::EntryPtr
MetricsViewI::getMatching(const MetricsHelper& helper) const
{
@@ -398,7 +421,7 @@ MetricsAdminI::getMetricsView(const string& view, const ::Ice::Current&)
}
MetricsFailuresSeq
-MetricsAdminI::getMetricsFailures(const string& view, const string& map, const ::Ice::Current&)
+MetricsAdminI::getMapMetricsFailures(const string& view, const string& map, const ::Ice::Current&)
{
Lock sync(*this);
std::map<string, MetricsViewIPtr>::const_iterator p = _views.find(view);
@@ -408,3 +431,15 @@ MetricsAdminI::getMetricsFailures(const string& view, const string& map, const :
}
return p->second->getFailures(map);
}
+
+MetricsFailures
+MetricsAdminI::getMetricsFailures(const string& view, const string& map, const string& id, const ::Ice::Current&)
+{
+ Lock sync(*this);
+ std::map<string, MetricsViewIPtr>::const_iterator p = _views.find(view);
+ if(p == _views.end())
+ {
+ throw UnknownMetricsView();
+ }
+ return p->second->getFailures(map, id);
+}
diff --git a/cpp/src/Ice/MetricsAdminI.h b/cpp/src/Ice/MetricsAdminI.h
index 8609dc6a42f..b1984dadbb6 100644
--- a/cpp/src/Ice/MetricsAdminI.h
+++ b/cpp/src/Ice/MetricsAdminI.h
@@ -80,6 +80,7 @@ public:
failed(const std::string& exceptionName)
{
IceUtil::Mutex::Lock sync(*this);
+ ++_object->failures;
++_failures[exceptionName];
}
@@ -158,6 +159,7 @@ public:
MetricsMapI(const MetricsMapI&);
MetricsFailuresSeq getFailures();
+ MetricsFailures getFailures(const std::string&);
MetricsMap getMetrics() const;
EntryPtr getMatching(const MetricsHelper&);
@@ -307,6 +309,7 @@ public:
MetricsView getMetrics();
MetricsFailuresSeq getFailures(const std::string&);
+ MetricsFailures getFailures(const std::string&, const std::string&);
MetricsMapI::EntryPtr getMatching(const MetricsHelper&) const;
@@ -331,7 +334,9 @@ public:
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&);
+ virtual MetricsFailuresSeq getMapMetricsFailures(const std::string&, const std::string&, const ::Ice::Current&);
+ virtual MetricsFailures getMetricsFailures(const std::string&, const std::string&, const std::string&,
+ const ::Ice::Current&);
private: