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

Side by Side Diff: net/disk_cache/simple/simple_entry_impl.cc

Issue 12226095: Make synchronous methods on disk_cache::SimpleEntryImpl() reentrant. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 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 "net/disk_cache/simple/simple_entry_impl.h" 5 #include "net/disk_cache/simple/simple_entry_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 delete this; 204 delete this;
205 } 205 }
206 206
207 std::string SimpleEntryImpl::GetKey() const { 207 std::string SimpleEntryImpl::GetKey() const {
208 DCHECK(thread_checker_.CalledOnValidThread()); 208 DCHECK(thread_checker_.CalledOnValidThread());
209 return key_; 209 return key_;
210 } 210 }
211 211
212 Time SimpleEntryImpl::GetLastUsed() const { 212 Time SimpleEntryImpl::GetLastUsed() const {
213 DCHECK(thread_checker_.CalledOnValidThread()); 213 DCHECK(thread_checker_.CalledOnValidThread());
214 if (!synchronous_entry_) { 214 return last_used_;
215 NOTIMPLEMENTED() << ": Synchronous operations overlapping an asynchronous "
216 << "operation.";
217 NOTREACHED();
218 }
219 return synchronous_entry_->last_used();
felipeg 2013/02/12 14:47:48 If we never set synchronous_entry_ to NULL as my c
pasko-google - do not use 2013/02/12 15:07:12 I disagree. Data races are never a good excuse for
220 } 215 }
221 216
222 Time SimpleEntryImpl::GetLastModified() const { 217 Time SimpleEntryImpl::GetLastModified() const {
223 DCHECK(thread_checker_.CalledOnValidThread()); 218 DCHECK(thread_checker_.CalledOnValidThread());
224 if (!synchronous_entry_) { 219 return last_modified_;
225 NOTIMPLEMENTED() << ": Synchronous operations overlapping an asynchronous "
226 << "operation.";
227 NOTREACHED();
228 }
229 return synchronous_entry_->last_modified();
230 } 220 }
231 221
232 int32 SimpleEntryImpl::GetDataSize(int index) const { 222 int32 SimpleEntryImpl::GetDataSize(int index) const {
233 DCHECK(thread_checker_.CalledOnValidThread()); 223 DCHECK(thread_checker_.CalledOnValidThread());
234 if (!synchronous_entry_) { 224 return data_size_[index];
235 NOTIMPLEMENTED() << ": Synchronous operations overlapping an asynchronous "
236 << "operation.";
237 NOTREACHED();
238 }
239 return synchronous_entry_->data_size(index);
240 } 225 }
241 226
242 int SimpleEntryImpl::ReadData(int index, 227 int SimpleEntryImpl::ReadData(int index,
243 int offset, 228 int offset,
244 net::IOBuffer* buf, 229 net::IOBuffer* buf,
245 int buf_len, 230 int buf_len,
246 const CompletionCallback& callback) { 231 const CompletionCallback& callback) {
247 DCHECK(thread_checker_.CalledOnValidThread()); 232 DCHECK(thread_checker_.CalledOnValidThread());
248 // TODO(gavinp): Add support for overlapping reads. The net::HttpCache does 233 // TODO(gavinp): Add support for overlapping reads. The net::HttpCache does
249 // make overlapping read requests when multiple transactions access the same 234 // make overlapping read requests when multiple transactions access the same
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 int SimpleEntryImpl::ReadyForSparseIO(const CompletionCallback& callback) { 315 int SimpleEntryImpl::ReadyForSparseIO(const CompletionCallback& callback) {
331 // TODO(gavinp): Determine if the simple backend should support sparse data. 316 // TODO(gavinp): Determine if the simple backend should support sparse data.
332 DCHECK(thread_checker_.CalledOnValidThread()); 317 DCHECK(thread_checker_.CalledOnValidThread());
333 NOTIMPLEMENTED(); 318 NOTIMPLEMENTED();
334 return net::ERR_FAILED; 319 return net::ERR_FAILED;
335 } 320 }
336 321
337 SimpleEntryImpl::SimpleEntryImpl( 322 SimpleEntryImpl::SimpleEntryImpl(
338 SimpleSynchronousEntry* synchronous_entry) 323 SimpleSynchronousEntry* synchronous_entry)
339 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)), 324 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
325 path_(synchronous_entry->path()),
340 key_(synchronous_entry->key()), 326 key_(synchronous_entry->key()),
341 synchronous_entry_(synchronous_entry), 327 synchronous_entry_(NULL),
342 has_been_doomed_(false) { 328 has_been_doomed_(false) {
343 DCHECK(synchronous_entry); 329 SetSynchronousEntry(synchronous_entry);
344 } 330 }
345 331
346 SimpleEntryImpl::~SimpleEntryImpl() { 332 SimpleEntryImpl::~SimpleEntryImpl() {
347 DCHECK(thread_checker_.CalledOnValidThread()); 333 DCHECK(thread_checker_.CalledOnValidThread());
348 DCHECK(!synchronous_entry_) << "synchronous_entry_ = " << synchronous_entry_; 334 DCHECK(!synchronous_entry_) << "synchronous_entry_ = " << synchronous_entry_;
349 } 335 }
350 336
351 SimpleSynchronousEntry* SimpleEntryImpl::ReleaseSynchronousEntry() { 337 SimpleSynchronousEntry* SimpleEntryImpl::ReleaseSynchronousEntry() {
352 DCHECK(synchronous_entry_); 338 DCHECK(synchronous_entry_);
353 SimpleSynchronousEntry* retval = synchronous_entry_; 339 SimpleSynchronousEntry* retval = synchronous_entry_;
354 synchronous_entry_ = NULL; 340 synchronous_entry_ = NULL;
355 return retval; 341 return retval;
356 } 342 }
357 343
358 void SimpleEntryImpl::SetSynchronousEntry( 344 void SimpleEntryImpl::SetSynchronousEntry(
359 SimpleSynchronousEntry* synchronous_entry) { 345 SimpleSynchronousEntry* synchronous_entry) {
360 DCHECK(!synchronous_entry_) << "synchronous_entry_ = " << synchronous_entry_; 346 DCHECK(!synchronous_entry_) << "synchronous_entry_ = " << synchronous_entry_;
361 synchronous_entry_ = synchronous_entry; 347 synchronous_entry_ = synchronous_entry;
348 last_used_ = synchronous_entry_->last_used();
349 last_modified_ = synchronous_entry_->last_modified();
350 for (int i = 0; i < kSimpleEntryFileCount; ++i)
351 data_size_[i] = synchronous_entry_->data_size(i);
362 } 352 }
363 353
364 } // namespace disk_cache 354 } // namespace disk_cache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698