New method StatsObserver::OnCompleteReports, passing ownership.
The new name, OnCompleteReports rather than OnComplete, is needed because in C++ method lookup, overriding a method hides all otherwise inherited methods with the same name, even if they have a different signature. And here, the intention is that each subclass should override one or the other of the two methods, and inherit the method it doesn't override. This cl is a prerequisite for https://codereview.webrtc.org/2567143003/, because the Chrome glue code needs to retain the stats report after the OnComplete method has returned. Currently, Chrome makes a copy of the stats mapping (which breaks when changing ValuePtr from an rtc::linked_ptr to an std::unique_ptr). After this cl, Chrome can be fixed to take ownership and no longer needs to copy anything, unblocking cl 2567143003. BUG=webrtc:6424 Review-Url: https://codereview.webrtc.org/2584553002 Cr-Commit-Position: refs/heads/master@{#15708}
This commit is contained in:
@ -109,7 +109,14 @@ class StreamCollectionInterface : public rtc::RefCountInterface {
|
||||
|
||||
class StatsObserver : public rtc::RefCountInterface {
|
||||
public:
|
||||
virtual void OnComplete(const StatsReports& reports) = 0;
|
||||
// TODO(nisse, hbos): Old version, not passing ownership. Should
|
||||
// perhaps be deprecated, but since all of this is a legacy
|
||||
// interface anyway, probably best to leave as is until this class
|
||||
// can be deleted.
|
||||
virtual void OnComplete(const StatsReports& reports) {}
|
||||
virtual void OnCompleteReports(std::unique_ptr<StatsReports> reports) {
|
||||
OnComplete(*reports);
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual ~StatsObserver() {}
|
||||
|
||||
Reference in New Issue
Block a user