Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1179)

Side by Side Diff: chrome/browser/performance_monitor/database.cc

Issue 10843010: Adds a method to the Performance Monitor Database to fetch the most recent metric. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: using the ContainsKey() method Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/performance_monitor/database.h" 5 #include "chrome/browser/performance_monitor/database.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
11 #include "base/json/json_writer.h" 11 #include "base/json/json_writer.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/path_service.h" 13 #include "base/path_service.h"
14 #include "base/stl_util.h"
14 #include "base/string_number_conversions.h" 15 #include "base/string_number_conversions.h"
15 #include "base/string_split.h" 16 #include "base/string_split.h"
16 #include "base/stringprintf.h" 17 #include "base/stringprintf.h"
17 #include "base/time.h" 18 #include "base/time.h"
18 #include "base/utf_string_conversions.h" 19 #include "base/utf_string_conversions.h"
19 #include "chrome/common/chrome_paths.h" 20 #include "chrome/common/chrome_paths.h"
20 #include "content/public/browser/browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
21 #include "third_party/leveldatabase/src/include/leveldb/db.h" 22 #include "third_party/leveldatabase/src/include/leveldb/db.h"
22 23
23 namespace performance_monitor { 24 namespace performance_monitor {
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 start, static_cast<MetricType>(0), std::string()); 373 start, static_cast<MetricType>(0), std::string());
373 scoped_ptr<leveldb::Iterator> it(recent_db_->NewIterator(read_options_)); 374 scoped_ptr<leveldb::Iterator> it(recent_db_->NewIterator(read_options_));
374 for (it->Seek(start_key); it->Valid(); it->Next()) { 375 for (it->Seek(start_key); it->Valid(); it->Next()) {
375 RecentKey split_key = SplitRecentKey(it->key().ToString()); 376 RecentKey split_key = SplitRecentKey(it->key().ToString());
376 if (split_key.type == metric_type) 377 if (split_key.type == metric_type)
377 results.push_back(split_key.activity); 378 results.push_back(split_key.activity);
378 } 379 }
379 return results; 380 return results;
380 } 381 }
381 382
383 bool Database::GetRecentStatsForActivityAndMetric(
384 const std::string& activity,
385 MetricType metric,
386 MetricInfo* info) {
387 CHECK(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
388 std::string recent_map_key = CreateRecentMapKey(metric, activity);
389 if (!ContainsKey(recent_map_, recent_map_key))
390 return false;
391 std::string recent_key = recent_map_[recent_map_key];
392
393 std::string result;
394 leveldb::Status status = recent_db_->Get(read_options_, recent_key, &result);
395 if (status.ok())
396 *info = MetricInfo(SplitRecentKey(recent_key).time, result);
397 return status.ok();
398 }
399
382 Database::MetricInfoVector Database::GetStatsForActivityAndMetric( 400 Database::MetricInfoVector Database::GetStatsForActivityAndMetric(
383 const std::string& activity, MetricType metric_type, 401 const std::string& activity, MetricType metric_type,
384 const base::Time& start, const base::Time& end) { 402 const base::Time& start, const base::Time& end) {
385 CHECK(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 403 CHECK(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
386 MetricInfoVector results; 404 MetricInfoVector results;
387 std::string start_key = CreateMetricKey(start, metric_type, activity); 405 std::string start_key = CreateMetricKey(start, metric_type, activity);
388 std::string end_key = CreateMetricKey(end, metric_type, activity); 406 std::string end_key = CreateMetricKey(end, metric_type, activity);
389 scoped_ptr<leveldb::Iterator> it(metric_db_->NewIterator(read_options_)); 407 scoped_ptr<leveldb::Iterator> it(metric_db_->NewIterator(read_options_));
390 for (it->Seek(start_key); 408 for (it->Seek(start_key);
391 it->Valid() && it->key().ToString() <= end_key; 409 it->Valid() && it->key().ToString() <= end_key;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 start_time_key_ = CreateActiveIntervalKey(current_time); 523 start_time_key_ = CreateActiveIntervalKey(current_time);
506 end_time = start_time_key_; 524 end_time = start_time_key_;
507 } else { 525 } else {
508 end_time = CreateActiveIntervalKey(clock_->GetTime()); 526 end_time = CreateActiveIntervalKey(clock_->GetTime());
509 } 527 }
510 last_update_time_ = current_time; 528 last_update_time_ = current_time;
511 active_interval_db_->Put(write_options_, start_time_key_, end_time); 529 active_interval_db_->Put(write_options_, start_time_key_, end_time);
512 } 530 }
513 531
514 } // namespace performance_monitor 532 } // namespace performance_monitor
OLDNEW
« no previous file with comments | « chrome/browser/performance_monitor/database.h ('k') | chrome/browser/performance_monitor/database_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698