summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/MetricsObserverI.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/MetricsObserverI.h')
-rw-r--r--cpp/include/Ice/MetricsObserverI.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/cpp/include/Ice/MetricsObserverI.h b/cpp/include/Ice/MetricsObserverI.h
index 12d53daf9d5..58ba5291314 100644
--- a/cpp/include/Ice/MetricsObserverI.h
+++ b/cpp/include/Ice/MetricsObserverI.h
@@ -349,8 +349,9 @@ public:
}
void
- update(const MetricsHelperT<MetricsType>& helper, EntrySeqType& objects)
+ init(const MetricsHelperT<MetricsType>& helper, EntrySeqType& objects, ObserverT& previous)
{
+ _objects = previous._objects;
std::sort(objects.begin(), objects.end());
typename EntrySeqType::const_iterator p = objects.begin();
typename EntrySeqType::iterator q = _objects.begin();
@@ -486,15 +487,14 @@ public:
return 0;
}
- ObserverImplPtrType obsv = ObserverImplPtrType::dynamicCast(observer);
- if(!obsv)
+ ObserverImplPtrType obsv = new ObserverImplType();
+ if(!observer)
{
- obsv = new ObserverImplType();
obsv->init(helper, metricsObjects);
}
else
{
- obsv->update(helper, metricsObjects);
+ obsv->init(helper, metricsObjects, *ObserverImplPtrType::dynamicCast(observer));
}
return obsv;
}