// Copyright (c) 2012 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. #include "net/base/host_cache.h" #include "base/logging.h" #include "net/base/net_errors.h" namespace net { //----------------------------------------------------------------------------- HostCache::Entry::Entry(int error, const AddressList& addrlist) : error(error), addrlist(addrlist) { } HostCache::Entry::~Entry() { } //----------------------------------------------------------------------------- HostCache::HostCache(size_t max_entries) : entries_(max_entries) { } HostCache::~HostCache() { } const HostCache::Entry* HostCache::Lookup(const Key& key, base::TimeTicks now) { DCHECK(CalledOnValidThread()); if (caching_is_disabled()) return NULL; return entries_.Get(key, now); } void HostCache::Set(const Key& key, int error, const AddressList& addrlist, base::TimeTicks now, base::TimeDelta ttl) { DCHECK(CalledOnValidThread()); if (caching_is_disabled()) return; entries_.Put(key, Entry(error, addrlist), now, ttl); } void HostCache::clear() { DCHECK(CalledOnValidThread()); entries_.Clear(); } size_t HostCache::size() const { DCHECK(CalledOnValidThread()); return entries_.size(); } size_t HostCache::max_entries() const { DCHECK(CalledOnValidThread()); return entries_.max_entries(); } // Note that this map may contain expired entries. const HostCache::EntryMap& HostCache::entries() const { DCHECK(CalledOnValidThread()); return entries_; } // static HostCache* HostCache::CreateDefaultCache() { static const size_t kMaxHostCacheEntries = 100; return new HostCache(kMaxHostCacheEntries); } } // namespace net