diff options
-rw-r--r-- | cpp/src/Ice/MetricsAdminI.cpp | 37 | ||||
-rw-r--r-- | cpp/src/Ice/MetricsAdminI.h | 7 | ||||
-rw-r--r-- | slice/Ice/Metrics.ice | 30 |
3 files changed, 70 insertions, 4 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: diff --git a/slice/Ice/Metrics.ice b/slice/Ice/Metrics.ice index 05aa7047934..65ae7ac62d6 100644 --- a/slice/Ice/Metrics.ice +++ b/slice/Ice/Metrics.ice @@ -49,6 +49,13 @@ class Metrics * **/ long totalLifetime = 0; + + /** + * + * The number of failures observed. + * + **/ + int failures; }; struct MetricsFailures @@ -126,7 +133,7 @@ interface MetricsAdmin /** * - * Get the metrics failure associated with the given view and map. + * Get the metrics failures associated with the given view and map. * * @throws UnknownMetricsView Raised if the metrics view can't be * found. @@ -138,7 +145,26 @@ interface MetricsAdmin * @return The metrics failures associated with the map. * **/ - MetricsFailuresSeq getMetricsFailures(string view, string map) + MetricsFailuresSeq getMapMetricsFailures(string view, string map) + throws UnknownMetricsView; + + /** + * + * Get the metrics failure associated for the given metrics + * + * @throws UnknownMetricsView Raised if the metrics view can't be + * found. + * + * @param view The name of the metrics view. + * + * @param map The name of the metrics map. + * + * @param map The ID of the metrics. + * + * @return The metrics failures associated with the metrics. + * + **/ + MetricsFailures getMetricsFailures(string view, string map, string id) throws UnknownMetricsView; }; |