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

Unified Diff: components/copresence/timed_map.h

Issue 2130803002: Deleting the copresence API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/copresence/test/fake_directive_handler.cc ('k') | components/copresence/timed_map_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/copresence/timed_map.h
diff --git a/components/copresence/timed_map.h b/components/copresence/timed_map.h
deleted file mode 100644
index ef3b9961fd86d43a5c22de50e14bc93e8b076bbf..0000000000000000000000000000000000000000
--- a/components/copresence/timed_map.h
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_COPRESENCE_TIMED_MAP_H_
-#define COMPONENTS_COPRESENCE_TIMED_MAP_H_
-
-#include <stddef.h>
-
-#include <map>
-#include <memory>
-#include <queue>
-#include <utility>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/time/default_tick_clock.h"
-#include "base/time/tick_clock.h"
-#include "base/time/time.h"
-#include "base/timer/timer.h"
-
-namespace copresence {
-
-// TimedMap is a map with the added functionality of clearing any
-// key/value pair after its specified lifetime is over.
-// TODO(ckehoe): Why is this interface so different from std::map?
-template <typename KeyType, typename ValueType>
-class TimedMap {
- public:
- TimedMap(const base::TimeDelta& lifetime, size_t max_elements)
- : kEmptyValue(ValueType()),
- clock_(new base::DefaultTickClock()),
- lifetime_(lifetime),
- max_elements_(max_elements) {
- timer_.Start(FROM_HERE, lifetime_, this, &TimedMap::ClearExpiredTokens);
- }
-
- ~TimedMap() {}
-
- void Add(const KeyType& key, const ValueType& value) {
- map_[key] = value;
- expiry_queue_.push(KeyTimeTuple(key, clock_->NowTicks() + lifetime_));
- while (map_.size() > max_elements_)
- ClearOldestToken();
- }
-
- bool HasKey(const KeyType& key) {
- ClearExpiredTokens();
- return map_.find(key) != map_.end();
- }
-
- const ValueType& GetValue(const KeyType& key) {
- ClearExpiredTokens();
- auto elt = map_.find(key);
- return elt == map_.end() ? kEmptyValue : elt->second;
- }
-
- ValueType* GetMutableValue(const KeyType& key) {
- ClearExpiredTokens();
- auto elt = map_.find(key);
- return elt == map_.end() ? nullptr : &(elt->second);
- }
-
- // TODO(ckehoe): Add a unit test for this.
- size_t Erase(const KeyType& key) {
- return map_.erase(key);
- }
-
- void set_clock_for_testing(std::unique_ptr<base::TickClock> clock) {
- clock_ = std::move(clock);
- }
-
- private:
- void ClearExpiredTokens() {
- while (!expiry_queue_.empty() &&
- expiry_queue_.top().second <= clock_->NowTicks())
- ClearOldestToken();
- }
-
- void ClearOldestToken() {
- map_.erase(expiry_queue_.top().first);
- expiry_queue_.pop();
- }
-
- using KeyTimeTuple = std::pair<KeyType, base::TimeTicks>;
-
- class EarliestFirstComparator {
- public:
- // This will sort our queue with the 'earliest' time being the top.
- bool operator()(const KeyTimeTuple& left, const KeyTimeTuple& right) const {
- return left.second > right.second;
- }
- };
-
- using ExpiryQueue = std::priority_queue<
- KeyTimeTuple, std::vector<KeyTimeTuple>, EarliestFirstComparator>;
-
- const ValueType kEmptyValue;
-
- std::unique_ptr<base::TickClock> clock_;
- base::RepeatingTimer timer_;
- const base::TimeDelta lifetime_;
- const size_t max_elements_;
- std::map<KeyType, ValueType> map_;
- // Priority queue with our element keys ordered by the earliest expiring keys
- // first.
- ExpiryQueue expiry_queue_;
-
- DISALLOW_COPY_AND_ASSIGN(TimedMap);
-};
-
-} // namespace copresence
-
-#endif // COMPONENTS_COPRESENCE_TIMED_MAP_H_
« no previous file with comments | « components/copresence/test/fake_directive_handler.cc ('k') | components/copresence/timed_map_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698