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

Side by Side Diff: net/disk_cache/very_simple/very_simple_backend_impl.cc

Issue 12192005: Add new simple disk cache backend. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to trunk (::FilePath --> base::FilePath) Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 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/disk_cache/very_simple/very_simple_backend_impl.h"
6
7 #include "base/bind.h"
8 #include "base/callback.h"
9 #include "base/file_util.h"
10 #include "base/message_loop_proxy.h"
11 #include "base/threading/worker_pool.h"
12 #include "net/base/net_errors.h"
13 #include "net/disk_cache/very_simple/very_simple_entry_impl.h"
rvargas (doing something else) 2013/02/06 03:28:40 How about renaming everything to simple, instead o
gavinp 2013/02/08 23:17:51 Done.
14
15 using base::Bind;
pasko-google - do not use 2013/02/05 21:20:33 nit: although allowed by our style, in net/ the u
gavinp 2013/02/08 23:17:51 Done, although with grumpiness.
pasko-google - do not use 2013/02/11 13:59:25 I understand your pain and grumpiness, please also
16 using base::Callback;
17 using base::MessageLoopProxy;
18 using base::Time;
19 using base::WorkerPool;
20
21 namespace disk_cache {
22
23 namespace {
rvargas (doing something else) 2013/02/06 03:28:40 nit: can this be outside of disk_cache namespace?
gavinp 2013/02/08 23:17:51 Done.
24
25 typedef Callback<VerySimpleBackendImpl*(void)> FactoryCallback;
26
27 void EnsureCachePathExists(
28 const FilePath& path,
29 const scoped_refptr<base::TaskRunner> callback_runner,
30 const Backend::CompletionCallback& callback) {
31 int result = net::OK;
32 if (!file_util::DirectoryExists(path) && !file_util::CreateDirectory(path))
33 result = net::ERR_FAILED;
34 callback_runner->PostTask(FROM_HERE, Bind(callback, result));
35 }
36
37 void OnCachePathCreated(const FactoryCallback& factory_callback,
38 disk_cache::Backend** backend,
39 const Backend::CompletionCallback& callback,
40 int result) {
41 if (result == net::OK)
42 *backend = factory_callback.Run();
43 else
44 *backend = NULL;
45 callback.Run(result);
46 }
47
48 } // namespace
49
50 VerySimpleBackendImpl::BackendFactory::BackendFactory(const FilePath& path)
51 : path_(path) {
52 VLOG(0) << "VerySimpleBackendImpl::BackendFactory::CreateBackend()";
pasko-google - do not use 2013/02/05 21:20:33 identical message as below, high log level, please
rvargas (doing something else) 2013/02/06 03:28:40 Don't add tracing logs
gavinp 2013/02/08 23:17:51 Done.
53 }
54
55 VerySimpleBackendImpl::BackendFactory::~BackendFactory() {
56 }
57
58 int VerySimpleBackendImpl::BackendFactory::CreateBackend(
59 net::NetLog* net_log,
60 disk_cache::Backend** backend,
61 const CompletionCallback& callback) {
62 VLOG(0) << "VerySimpleBackendImpl::BackendFactory::CreateBackend()";
63
64 base::WorkerPool::PostTask(
rvargas (doing something else) 2013/02/06 03:28:40 nit: first argument here.
gavinp 2013/02/08 23:17:51 Done.
65 FROM_HERE, Bind(&EnsureCachePathExists, path_,
66 MessageLoopProxy::current(),
67 Bind(&OnCachePathCreated,
68 Bind(&VerySimpleBackendImpl::Create,
rvargas (doing something else) 2013/02/06 03:28:40 wow, three nested Binds :( Can we just split this
gavinp 2013/02/08 23:17:51 Goes to show that a dedicated programmer can write
69 path_),
70 backend, callback)),
71 true);
72 return net::ERR_IO_PENDING;
73 }
74
75 VerySimpleBackendImpl::~VerySimpleBackendImpl() {
76 DCHECK(thread_checker_.CalledOnValidThread());
rvargas (doing something else) 2013/02/06 03:28:40 nit: seems overkill, considering that all methods
gavinp 2013/02/08 23:17:51 I agree it is overkill technically. I am including
pasko-google - do not use 2013/02/11 13:59:25 +1, these DCHECKs are good for documentation
rvargas (doing something else) 2013/02/13 01:48:46 I would agree with that if the class had a mixed t
gavinp 2013/02/14 15:29:55 Done.
77 }
78
79 net::CacheType VerySimpleBackendImpl::GetCacheType() const {
80 DCHECK(thread_checker_.CalledOnValidThread());
81 return net::DISK_CACHE;
82 }
83
84 int32 VerySimpleBackendImpl::GetEntryCount() const {
85 return 0;
rvargas (doing something else) 2013/02/06 03:28:40 Todo?
gavinp 2013/02/08 23:17:51 Todo!
86 }
87
88 int VerySimpleBackendImpl::OpenEntry(const std::string& key,
89 Entry** entry,
90 const CompletionCallback& callback) {
91 DCHECK(thread_checker_.CalledOnValidThread());
92 return VerySimpleEntryImpl::OpenEntry(path_, key, entry, callback);
93 }
94
95 int VerySimpleBackendImpl::CreateEntry(const std::string& key,
96 Entry** entry,
97 const CompletionCallback& callback) {
98 DCHECK(thread_checker_.CalledOnValidThread());
99 return VerySimpleEntryImpl::CreateEntry(path_, key, entry, callback);
100 }
101
102 int VerySimpleBackendImpl::DoomEntry(const std::string& key,
103 const net::CompletionCallback& callback) {
104 DCHECK(thread_checker_.CalledOnValidThread());
105 return VerySimpleEntryImpl::DoomEntry(path_, key, callback);
106 }
107
108 int VerySimpleBackendImpl::DoomAllEntries(const CompletionCallback& callback) {
109 DCHECK(thread_checker_.CalledOnValidThread());
110 return net::ERR_FAILED;
rvargas (doing something else) 2013/02/06 03:28:40 Todo? etc
gavinp 2013/02/08 23:17:51 Done.
111 }
112
113 int VerySimpleBackendImpl::DoomEntriesBetween(
114 const Time initial_time,
115 const Time end_time,
116 const CompletionCallback& callback) {
117 DCHECK(thread_checker_.CalledOnValidThread());
118 return net::ERR_FAILED;
119 }
120
121 int VerySimpleBackendImpl::DoomEntriesSince(
122 const Time initial_time,
123 const CompletionCallback& callback) {
124 DCHECK(thread_checker_.CalledOnValidThread());
125 return net::ERR_FAILED;
126 }
127
128 int VerySimpleBackendImpl::OpenNextEntry(void** iter,
129 Entry** next_entry,
130 const CompletionCallback& callback) {
131 DCHECK(thread_checker_.CalledOnValidThread());
132 return net::ERR_FAILED;
pasko-google - do not use 2013/02/05 21:20:33 Just curious, do the callers always workaround suc
gavinp 2013/02/08 23:17:51 I'll go deadly DCHECK, since I don't know.
133 }
134
135 void VerySimpleBackendImpl::EndEnumeration(void** iter) {
136 DCHECK(thread_checker_.CalledOnValidThread());
137 }
138
139 void VerySimpleBackendImpl::GetStats(
140 std::vector<std::pair<std::string, std::string> >* stats) {
141 DCHECK(thread_checker_.CalledOnValidThread());
142 }
143
144 void VerySimpleBackendImpl::OnExternalCacheHit(const std::string& key) {
145 DCHECK(thread_checker_.CalledOnValidThread());
146 }
147
148 VerySimpleBackendImpl::VerySimpleBackendImpl(
149 const FilePath& path) : path_(path) {
rvargas (doing something else) 2013/02/06 03:28:40 The general idea is that at this point contents of
gavinp 2013/02/08 23:17:51 Yes. That was true in the patch you were reviewing
rvargas (doing something else) 2013/02/13 01:48:46 What I meant is that the structure of SimpleBacken
gavinp 2013/02/14 15:29:55 Yeah. Currently Egor plans to chase this and get i
150 }
151
152 // static
153 VerySimpleBackendImpl* VerySimpleBackendImpl::Create(const FilePath& path) {
154 return new VerySimpleBackendImpl(path);
pasko-google - do not use 2013/02/05 21:20:33 simpler would be to do this one liner in OnCachePa
gavinp 2013/02/08 23:17:51 Happy to. I think I was being too averse to making
155 }
156
157 } // namespace disk_cache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698