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

Side by Side Diff: net/disk_cache/memory/mem_entry_impl.cc

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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/disk_cache/memory/mem_entry_impl.h ('k') | net/disk_cache/memory/mem_rankings.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/memory/mem_entry_impl.h" 5 #include "net/disk_cache/memory/mem_entry_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "net/base/io_buffer.h" 11 #include "net/base/io_buffer.h"
12 #include "net/base/net_errors.h" 12 #include "net/base/net_errors.h"
13 #include "net/disk_cache/memory/mem_backend_impl.h" 13 #include "net/disk_cache/memory/mem_backend_impl.h"
14 #include "net/disk_cache/net_log_parameters.h" 14 #include "net/disk_cache/net_log_parameters.h"
15 15
16 using base::Time; 16 using base::Time;
17 17
18 namespace { 18 namespace {
19 19
20 const int kSparseData = 1; 20 const int kSparseData = 1;
21 21
22 // Maximum size of a sparse entry is 2 to the power of this number. 22 // Maximum size of a sparse entry is 2 to the power of this number.
23 const int kMaxSparseEntryBits = 12; 23 const int kMaxSparseEntryBits = 12;
24 24
25 // Sparse entry has maximum size of 4KB. 25 // Sparse entry has maximum size of 4KB.
26 const int kMaxSparseEntrySize = 1 << kMaxSparseEntryBits; 26 const int kMaxSparseEntrySize = 1 << kMaxSparseEntryBits;
27 27
28 // Convert global offset to child index. 28 // Convert global offset to child index.
29 inline int ToChildIndex(int64 offset) { 29 inline int ToChildIndex(int64_t offset) {
30 return static_cast<int>(offset >> kMaxSparseEntryBits); 30 return static_cast<int>(offset >> kMaxSparseEntryBits);
31 } 31 }
32 32
33 // Convert global offset to offset in child entry. 33 // Convert global offset to offset in child entry.
34 inline int ToChildOffset(int64 offset) { 34 inline int ToChildOffset(int64_t offset) {
35 return static_cast<int>(offset & (kMaxSparseEntrySize - 1)); 35 return static_cast<int>(offset & (kMaxSparseEntrySize - 1));
36 } 36 }
37 37
38 // Returns a name for a child entry given the base_name of the parent and the 38 // Returns a name for a child entry given the base_name of the parent and the
39 // child_id. This name is only used for logging purposes. 39 // child_id. This name is only used for logging purposes.
40 // If the entry is called entry_name, child entries will be named something 40 // If the entry is called entry_name, child entries will be named something
41 // like Range_entry_name:YYY where YYY is the number of the particular child. 41 // like Range_entry_name:YYY where YYY is the number of the particular child.
42 std::string GenerateChildName(const std::string& base_name, int child_id) { 42 std::string GenerateChildName(const std::string& base_name, int child_id) {
43 return base::StringPrintf("Range_%s:%i", base_name.c_str(), child_id); 43 return base::StringPrintf("Range_%s:%i", base_name.c_str(), child_id);
44 } 44 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 last_used_ = current; 81 last_used_ = current;
82 82
83 net_log_ = net::BoundNetLog::Make(net_log, 83 net_log_ = net::BoundNetLog::Make(net_log,
84 net::NetLog::SOURCE_MEMORY_CACHE_ENTRY); 84 net::NetLog::SOURCE_MEMORY_CACHE_ENTRY);
85 // Must be called after |key_| is set, so GetKey() works. 85 // Must be called after |key_| is set, so GetKey() works.
86 net_log_.BeginEvent( 86 net_log_.BeginEvent(
87 net::NetLog::TYPE_DISK_CACHE_MEM_ENTRY_IMPL, 87 net::NetLog::TYPE_DISK_CACHE_MEM_ENTRY_IMPL,
88 CreateNetLogEntryCreationCallback(this, true)); 88 CreateNetLogEntryCreationCallback(this, true));
89 89
90 Open(); 90 Open();
91 backend_->ModifyStorageSize(0, static_cast<int32>(key.size())); 91 backend_->ModifyStorageSize(0, static_cast<int32_t>(key.size()));
92 return true; 92 return true;
93 } 93 }
94 94
95 void MemEntryImpl::InternalDoom() { 95 void MemEntryImpl::InternalDoom() {
96 net_log_.AddEvent(net::NetLog::TYPE_ENTRY_DOOM); 96 net_log_.AddEvent(net::NetLog::TYPE_ENTRY_DOOM);
97 doomed_ = true; 97 doomed_ = true;
98 if (!ref_count_) { 98 if (!ref_count_) {
99 if (type() == kParentEntry) { 99 if (type() == kParentEntry) {
100 // If this is a parent entry, we need to doom all the child entries. 100 // If this is a parent entry, we need to doom all the child entries.
101 if (children_.get()) { 101 if (children_.get()) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 170 }
171 171
172 Time MemEntryImpl::GetLastUsed() const { 172 Time MemEntryImpl::GetLastUsed() const {
173 return last_used_; 173 return last_used_;
174 } 174 }
175 175
176 Time MemEntryImpl::GetLastModified() const { 176 Time MemEntryImpl::GetLastModified() const {
177 return last_modified_; 177 return last_modified_;
178 } 178 }
179 179
180 int32 MemEntryImpl::GetDataSize(int index) const { 180 int32_t MemEntryImpl::GetDataSize(int index) const {
181 if (index < 0 || index >= NUM_STREAMS) 181 if (index < 0 || index >= NUM_STREAMS)
182 return 0; 182 return 0;
183 return data_size_[index]; 183 return data_size_[index];
184 } 184 }
185 185
186 int MemEntryImpl::ReadData(int index, int offset, IOBuffer* buf, int buf_len, 186 int MemEntryImpl::ReadData(int index, int offset, IOBuffer* buf, int buf_len,
187 const CompletionCallback& callback) { 187 const CompletionCallback& callback) {
188 if (net_log_.IsCapturing()) { 188 if (net_log_.IsCapturing()) {
189 net_log_.BeginEvent( 189 net_log_.BeginEvent(
190 net::NetLog::TYPE_ENTRY_READ_DATA, 190 net::NetLog::TYPE_ENTRY_READ_DATA,
(...skipping 21 matching lines...) Expand all
212 int result = InternalWriteData(index, offset, buf, buf_len, truncate); 212 int result = InternalWriteData(index, offset, buf, buf_len, truncate);
213 213
214 if (net_log_.IsCapturing()) { 214 if (net_log_.IsCapturing()) {
215 net_log_.EndEvent( 215 net_log_.EndEvent(
216 net::NetLog::TYPE_ENTRY_WRITE_DATA, 216 net::NetLog::TYPE_ENTRY_WRITE_DATA,
217 CreateNetLogReadWriteCompleteCallback(result)); 217 CreateNetLogReadWriteCompleteCallback(result));
218 } 218 }
219 return result; 219 return result;
220 } 220 }
221 221
222 int MemEntryImpl::ReadSparseData(int64 offset, IOBuffer* buf, int buf_len, 222 int MemEntryImpl::ReadSparseData(int64_t offset,
223 IOBuffer* buf,
224 int buf_len,
223 const CompletionCallback& callback) { 225 const CompletionCallback& callback) {
224 if (net_log_.IsCapturing()) { 226 if (net_log_.IsCapturing()) {
225 net_log_.BeginEvent( 227 net_log_.BeginEvent(
226 net::NetLog::TYPE_SPARSE_READ, 228 net::NetLog::TYPE_SPARSE_READ,
227 CreateNetLogSparseOperationCallback(offset, buf_len)); 229 CreateNetLogSparseOperationCallback(offset, buf_len));
228 } 230 }
229 int result = InternalReadSparseData(offset, buf, buf_len); 231 int result = InternalReadSparseData(offset, buf, buf_len);
230 if (net_log_.IsCapturing()) 232 if (net_log_.IsCapturing())
231 net_log_.EndEvent(net::NetLog::TYPE_SPARSE_READ); 233 net_log_.EndEvent(net::NetLog::TYPE_SPARSE_READ);
232 return result; 234 return result;
233 } 235 }
234 236
235 int MemEntryImpl::WriteSparseData(int64 offset, IOBuffer* buf, int buf_len, 237 int MemEntryImpl::WriteSparseData(int64_t offset,
238 IOBuffer* buf,
239 int buf_len,
236 const CompletionCallback& callback) { 240 const CompletionCallback& callback) {
237 if (net_log_.IsCapturing()) { 241 if (net_log_.IsCapturing()) {
238 net_log_.BeginEvent( 242 net_log_.BeginEvent(
239 net::NetLog::TYPE_SPARSE_WRITE, 243 net::NetLog::TYPE_SPARSE_WRITE,
240 CreateNetLogSparseOperationCallback(offset, buf_len)); 244 CreateNetLogSparseOperationCallback(offset, buf_len));
241 } 245 }
242 int result = InternalWriteSparseData(offset, buf, buf_len); 246 int result = InternalWriteSparseData(offset, buf, buf_len);
243 if (net_log_.IsCapturing()) 247 if (net_log_.IsCapturing())
244 net_log_.EndEvent(net::NetLog::TYPE_SPARSE_WRITE); 248 net_log_.EndEvent(net::NetLog::TYPE_SPARSE_WRITE);
245 return result; 249 return result;
246 } 250 }
247 251
248 int MemEntryImpl::GetAvailableRange(int64 offset, int len, int64* start, 252 int MemEntryImpl::GetAvailableRange(int64_t offset,
253 int len,
254 int64_t* start,
249 const CompletionCallback& callback) { 255 const CompletionCallback& callback) {
250 if (net_log_.IsCapturing()) { 256 if (net_log_.IsCapturing()) {
251 net_log_.BeginEvent( 257 net_log_.BeginEvent(
252 net::NetLog::TYPE_SPARSE_GET_RANGE, 258 net::NetLog::TYPE_SPARSE_GET_RANGE,
253 CreateNetLogSparseOperationCallback(offset, len)); 259 CreateNetLogSparseOperationCallback(offset, len));
254 } 260 }
255 int result = GetAvailableRange(offset, len, start); 261 int result = GetAvailableRange(offset, len, start);
256 if (net_log_.IsCapturing()) { 262 if (net_log_.IsCapturing()) {
257 net_log_.EndEvent( 263 net_log_.EndEvent(
258 net::NetLog::TYPE_SPARSE_GET_RANGE, 264 net::NetLog::TYPE_SPARSE_GET_RANGE,
259 CreateNetLogGetAvailableRangeResultCallback(*start, result)); 265 CreateNetLogGetAvailableRangeResultCallback(*start, result));
260 } 266 }
261 return result; 267 return result;
262 } 268 }
263 269
264 bool MemEntryImpl::CouldBeSparse() const { 270 bool MemEntryImpl::CouldBeSparse() const {
265 DCHECK_EQ(kParentEntry, type()); 271 DCHECK_EQ(kParentEntry, type());
266 return (children_.get() != NULL); 272 return (children_.get() != NULL);
267 } 273 }
268 274
269 int MemEntryImpl::ReadyForSparseIO(const CompletionCallback& callback) { 275 int MemEntryImpl::ReadyForSparseIO(const CompletionCallback& callback) {
270 return net::OK; 276 return net::OK;
271 } 277 }
272 278
273 // ------------------------------------------------------------------------ 279 // ------------------------------------------------------------------------
274 280
275 MemEntryImpl::~MemEntryImpl() { 281 MemEntryImpl::~MemEntryImpl() {
276 for (int i = 0; i < NUM_STREAMS; i++) 282 for (int i = 0; i < NUM_STREAMS; i++)
277 backend_->ModifyStorageSize(data_size_[i], 0); 283 backend_->ModifyStorageSize(data_size_[i], 0);
278 backend_->ModifyStorageSize(static_cast<int32>(key_.size()), 0); 284 backend_->ModifyStorageSize(static_cast<int32_t>(key_.size()), 0);
279 net_log_.EndEvent(net::NetLog::TYPE_DISK_CACHE_MEM_ENTRY_IMPL); 285 net_log_.EndEvent(net::NetLog::TYPE_DISK_CACHE_MEM_ENTRY_IMPL);
280 } 286 }
281 287
282 int MemEntryImpl::InternalReadData(int index, int offset, IOBuffer* buf, 288 int MemEntryImpl::InternalReadData(int index, int offset, IOBuffer* buf,
283 int buf_len) { 289 int buf_len) {
284 DCHECK(type() == kParentEntry || index == kSparseData); 290 DCHECK(type() == kParentEntry || index == kSparseData);
285 291
286 if (index < 0 || index >= NUM_STREAMS) 292 if (index < 0 || index >= NUM_STREAMS)
287 return net::ERR_INVALID_ARGUMENT; 293 return net::ERR_INVALID_ARGUMENT;
288 294
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 343
338 UpdateRank(true); 344 UpdateRank(true);
339 345
340 if (!buf_len) 346 if (!buf_len)
341 return 0; 347 return 0;
342 348
343 memcpy(&(data_[index])[offset], buf->data(), buf_len); 349 memcpy(&(data_[index])[offset], buf->data(), buf_len);
344 return buf_len; 350 return buf_len;
345 } 351 }
346 352
347 int MemEntryImpl::InternalReadSparseData(int64 offset, IOBuffer* buf, 353 int MemEntryImpl::InternalReadSparseData(int64_t offset,
354 IOBuffer* buf,
348 int buf_len) { 355 int buf_len) {
349 DCHECK(type() == kParentEntry); 356 DCHECK(type() == kParentEntry);
350 357
351 if (!InitSparseInfo()) 358 if (!InitSparseInfo())
352 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; 359 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
353 360
354 if (offset < 0 || buf_len < 0) 361 if (offset < 0 || buf_len < 0)
355 return net::ERR_INVALID_ARGUMENT; 362 return net::ERR_INVALID_ARGUMENT;
356 363
357 // We will keep using this buffer and adjust the offset in this buffer. 364 // We will keep using this buffer and adjust the offset in this buffer.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 401
395 // Increment the counter by number of bytes read in the child entry. 402 // Increment the counter by number of bytes read in the child entry.
396 io_buf->DidConsume(ret); 403 io_buf->DidConsume(ret);
397 } 404 }
398 405
399 UpdateRank(false); 406 UpdateRank(false);
400 407
401 return io_buf->BytesConsumed(); 408 return io_buf->BytesConsumed();
402 } 409 }
403 410
404 int MemEntryImpl::InternalWriteSparseData(int64 offset, IOBuffer* buf, 411 int MemEntryImpl::InternalWriteSparseData(int64_t offset,
412 IOBuffer* buf,
405 int buf_len) { 413 int buf_len) {
406 DCHECK(type() == kParentEntry); 414 DCHECK(type() == kParentEntry);
407 415
408 if (!InitSparseInfo()) 416 if (!InitSparseInfo())
409 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; 417 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
410 418
411 if (offset < 0 || buf_len < 0) 419 if (offset < 0 || buf_len < 0)
412 return net::ERR_INVALID_ARGUMENT; 420 return net::ERR_INVALID_ARGUMENT;
413 421
414 scoped_refptr<net::DrainableIOBuffer> io_buf( 422 scoped_refptr<net::DrainableIOBuffer> io_buf(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 468
461 // Adjust the offset in the IO buffer. 469 // Adjust the offset in the IO buffer.
462 io_buf->DidConsume(ret); 470 io_buf->DidConsume(ret);
463 } 471 }
464 472
465 UpdateRank(true); 473 UpdateRank(true);
466 474
467 return io_buf->BytesConsumed(); 475 return io_buf->BytesConsumed();
468 } 476 }
469 477
470 int MemEntryImpl::GetAvailableRange(int64 offset, int len, int64* start) { 478 int MemEntryImpl::GetAvailableRange(int64_t offset, int len, int64_t* start) {
471 DCHECK(type() == kParentEntry); 479 DCHECK(type() == kParentEntry);
472 DCHECK(start); 480 DCHECK(start);
473 481
474 if (!InitSparseInfo()) 482 if (!InitSparseInfo())
475 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; 483 return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
476 484
477 if (offset < 0 || len < 0 || !start) 485 if (offset < 0 || len < 0 || !start)
478 return net::ERR_INVALID_ARGUMENT; 486 return net::ERR_INVALID_ARGUMENT;
479 487
480 MemEntryImpl* current_child = NULL; 488 MemEntryImpl* current_child = NULL;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 parent_ = parent; 578 parent_ = parent;
571 child_id_ = child_id; 579 child_id_ = child_id;
572 Time current = Time::Now(); 580 Time current = Time::Now();
573 last_modified_ = current; 581 last_modified_ = current;
574 last_used_ = current; 582 last_used_ = current;
575 // Insert this to the backend's ranking list. 583 // Insert this to the backend's ranking list.
576 backend_->InsertIntoRankingList(this); 584 backend_->InsertIntoRankingList(this);
577 return true; 585 return true;
578 } 586 }
579 587
580 MemEntryImpl* MemEntryImpl::OpenChild(int64 offset, bool create) { 588 MemEntryImpl* MemEntryImpl::OpenChild(int64_t offset, bool create) {
581 DCHECK(type() == kParentEntry); 589 DCHECK(type() == kParentEntry);
582 int index = ToChildIndex(offset); 590 int index = ToChildIndex(offset);
583 EntryMap::iterator i = children_->find(index); 591 EntryMap::iterator i = children_->find(index);
584 if (i != children_->end()) { 592 if (i != children_->end()) {
585 return i->second; 593 return i->second;
586 } else if (create) { 594 } else if (create) {
587 MemEntryImpl* child = new MemEntryImpl(backend_); 595 MemEntryImpl* child = new MemEntryImpl(backend_);
588 child->InitChildEntry(this, index, net_log_.net_log()); 596 child->InitChildEntry(this, index, net_log_.net_log());
589 (*children_)[index] = child; 597 (*children_)[index] = child;
590 return child; 598 return child;
591 } 599 }
592 return NULL; 600 return NULL;
593 } 601 }
594 602
595 int MemEntryImpl::FindNextChild(int64 offset, int len, MemEntryImpl** child) { 603 int MemEntryImpl::FindNextChild(int64_t offset, int len, MemEntryImpl** child) {
596 DCHECK(child); 604 DCHECK(child);
597 *child = NULL; 605 *child = NULL;
598 int scanned_len = 0; 606 int scanned_len = 0;
599 607
600 // This loop tries to find the first existing child. 608 // This loop tries to find the first existing child.
601 while (scanned_len < len) { 609 while (scanned_len < len) {
602 // This points to the current offset in the child. 610 // This points to the current offset in the child.
603 int current_child_offset = ToChildOffset(offset + scanned_len); 611 int current_child_offset = ToChildOffset(offset + scanned_len);
604 MemEntryImpl* current_child = OpenChild(offset + scanned_len, false); 612 MemEntryImpl* current_child = OpenChild(offset + scanned_len, false);
605 if (current_child) { 613 if (current_child) {
(...skipping 16 matching lines...) Expand all
622 scanned_len += kMaxSparseEntrySize - current_child_offset; 630 scanned_len += kMaxSparseEntrySize - current_child_offset;
623 } 631 }
624 return scanned_len; 632 return scanned_len;
625 } 633 }
626 634
627 void MemEntryImpl::DetachChild(int child_id) { 635 void MemEntryImpl::DetachChild(int child_id) {
628 children_->erase(child_id); 636 children_->erase(child_id);
629 } 637 }
630 638
631 } // namespace disk_cache 639 } // namespace disk_cache
OLDNEW
« no previous file with comments | « net/disk_cache/memory/mem_entry_impl.h ('k') | net/disk_cache/memory/mem_rankings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698