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

Side by Side Diff: net/dns/host_cache.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « net/dns/host_cache.h ('k') | net/dns/host_cache_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #include "net/dns/host_cache.h"
6
7 #include "base/logging.h"
8 #include "base/metrics/field_trial.h"
9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_number_conversions.h"
11 #include "net/base/net_errors.h"
12
13 namespace net {
14
15 //-----------------------------------------------------------------------------
16
17 HostCache::Entry::Entry(int error, const AddressList& addrlist,
18 base::TimeDelta ttl)
19 : error(error),
20 addrlist(addrlist),
21 ttl(ttl) {
22 DCHECK(ttl >= base::TimeDelta());
23 }
24
25 HostCache::Entry::Entry(int error, const AddressList& addrlist)
26 : error(error),
27 addrlist(addrlist),
28 ttl(base::TimeDelta::FromSeconds(-1)) {
29 }
30
31 HostCache::Entry::~Entry() {
32 }
33
34 //-----------------------------------------------------------------------------
35
36 HostCache::HostCache(size_t max_entries)
37 : entries_(max_entries) {
38 }
39
40 HostCache::~HostCache() {
41 }
42
43 const HostCache::Entry* HostCache::Lookup(const Key& key,
44 base::TimeTicks now) {
45 DCHECK(CalledOnValidThread());
46 if (caching_is_disabled())
47 return NULL;
48
49 return entries_.Get(key, now);
50 }
51
52 void HostCache::Set(const Key& key,
53 const Entry& entry,
54 base::TimeTicks now,
55 base::TimeDelta ttl) {
56 DCHECK(CalledOnValidThread());
57 if (caching_is_disabled())
58 return;
59
60 entries_.Put(key, entry, now, now + ttl);
61 }
62
63 void HostCache::clear() {
64 DCHECK(CalledOnValidThread());
65 entries_.Clear();
66 }
67
68 size_t HostCache::size() const {
69 DCHECK(CalledOnValidThread());
70 return entries_.size();
71 }
72
73 size_t HostCache::max_entries() const {
74 DCHECK(CalledOnValidThread());
75 return entries_.max_entries();
76 }
77
78 // Note that this map may contain expired entries.
79 const HostCache::EntryMap& HostCache::entries() const {
80 DCHECK(CalledOnValidThread());
81 return entries_;
82 }
83
84 // static
85 scoped_ptr<HostCache> HostCache::CreateDefaultCache() {
86 // Cache capacity is determined by the field trial.
87 #if defined(ENABLE_BUILT_IN_DNS)
88 const size_t kDefaultMaxEntries = 1000;
89 #else
90 const size_t kDefaultMaxEntries = 100;
91 #endif
92 const size_t kSaneMaxEntries = 1 << 20;
93 size_t max_entries = 0;
94 base::StringToSizeT(base::FieldTrialList::FindFullName("HostCacheSize"),
95 &max_entries);
96 if ((max_entries == 0) || (max_entries > kSaneMaxEntries))
97 max_entries = kDefaultMaxEntries;
98 return make_scoped_ptr(new HostCache(max_entries));
99 }
100
101 void HostCache::EvictionHandler::Handle(
102 const Key& key,
103 const Entry& entry,
104 const base::TimeTicks& expiration,
105 const base::TimeTicks& now,
106 bool on_get) const {
107 if (on_get) {
108 DCHECK(now >= expiration);
109 UMA_HISTOGRAM_CUSTOM_TIMES("DNS.CacheExpiredOnGet", now - expiration,
110 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromDays(1), 100);
111 return;
112 }
113 if (expiration > now) {
114 UMA_HISTOGRAM_CUSTOM_TIMES("DNS.CacheEvicted", expiration - now,
115 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromDays(1), 100);
116 } else {
117 UMA_HISTOGRAM_CUSTOM_TIMES("DNS.CacheExpired", now - expiration,
118 base::TimeDelta::FromSeconds(1), base::TimeDelta::FromDays(1), 100);
119 }
120 }
121
122 } // namespace net
OLDNEW
« no previous file with comments | « net/dns/host_cache.h ('k') | net/dns/host_cache_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698