1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_METRICS_PROFILER_TRACKING_SYNCHRONIZER_OBSERVER_H_ 6 #define COMPONENTS_METRICS_PROFILER_TRACKING_SYNCHRONIZER_OBSERVER_H_ 7 8 namespace tracked_objects { 9 struct ProcessDataSnapshot; 10 } 11 12 namespace metrics { 13 14 // Observer for notifications from the TrackingSynchronizer class. 15 class TrackingSynchronizerObserver { 16 public: 17 // Received |profiler_data| from a single process of |process_type|. 18 // The observer should assume there might be more data coming until 19 // |FinishedReceivingData()| is called. 20 virtual void ReceivedProfilerData( 21 const tracked_objects::ProcessDataSnapshot& profiler_data, 22 int process_type) = 0; 23 24 // The observer should not expect any more calls to |ReceivedProfilerData()| 25 // (without re-registering). This is sent either when data from all processes 26 // has been gathered, or when the request times out. FinishedReceivingProfilerData()27 virtual void FinishedReceivingProfilerData() {} 28 29 protected: TrackingSynchronizerObserver()30 TrackingSynchronizerObserver() {} ~TrackingSynchronizerObserver()31 virtual ~TrackingSynchronizerObserver() {} 32 33 private: 34 DISALLOW_COPY_AND_ASSIGN(TrackingSynchronizerObserver); 35 }; 36 37 } // namespace metrics 38 39 #endif // COMPONENTS_METRICS_PROFILER_TRACKING_SYNCHRONIZER_OBSERVER_H_ 40