@@ -37,6 +37,16 @@ StatsExporterImpl* StatsExporterImpl::Get() {
3737 return global_stats_exporter_impl;
3838}
3939
40+ void StatsExporterImpl::SetInterval (absl::Duration interval) {
41+ absl::MutexLock l (&mu_);
42+ export_interval_ = interval;
43+ }
44+
45+ absl::Time StatsExporterImpl::GetNextExportTime () const {
46+ absl::MutexLock l (&mu_);
47+ return absl::Now () + export_interval_;
48+ }
49+
4050void StatsExporterImpl::AddView (const ViewDescriptor& view) {
4151 absl::MutexLock l (&mu_);
4252 views_[view.name ()] = absl::make_unique<opencensus::stats::View>(view);
@@ -90,31 +100,44 @@ void StatsExporterImpl::StartExportThread() EXCLUSIVE_LOCKS_REQUIRED(mu_) {
90100}
91101
92102void StatsExporterImpl::RunWorkerLoop () {
93- absl::Time next_export_time = absl::Now () + export_interval_ ;
103+ absl::Time next_export_time = GetNextExportTime () ;
94104 while (true ) {
95105 // SleepFor() returns immediately when given a negative duration.
96106 absl::SleepFor (next_export_time - absl::Now ());
97107 // In case the last export took longer than the export interval, we
98108 // calculate the next time from now.
99- next_export_time = absl::Now () + export_interval_ ;
109+ next_export_time = GetNextExportTime () ;
100110 Export ();
101111 }
102112}
103113
114+ // StatsExporter
115+ // -------------
116+
117+ // static
118+ void StatsExporter::SetInterval (absl::Duration interval) {
119+ StatsExporterImpl::Get ()->SetInterval (interval);
120+ }
121+
122+ // static
104123void StatsExporter::RemoveView (absl::string_view name) {
105124 StatsExporterImpl::Get ()->RemoveView (name);
106125}
107126
127+ // static
108128void StatsExporter::RegisterPushHandler (std::unique_ptr<Handler> handler) {
109129 StatsExporterImpl::Get ()->RegisterPushHandler (std::move (handler));
110130}
111131
132+ // static
112133std::vector<std::pair<ViewDescriptor, ViewData>> StatsExporter::GetViewData () {
113134 return StatsExporterImpl::Get ()->GetViewData ();
114135}
115136
137+ // static
116138void StatsExporter::ExportForTesting () { StatsExporterImpl::Get ()->Export (); }
117139
140+ // static
118141void StatsExporter::ClearHandlersForTesting () {
119142 StatsExporterImpl::Get ()->ClearHandlersForTesting ();
120143}
0 commit comments