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

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

Issue 12880: Disk cache: Add support for an extra data stream for each cache entry.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/mem_entry_impl.h" 5 #include "net/disk_cache/mem_entry_impl.h"
6 6
7 #include "net/base/net_errors.h" 7 #include "net/base/net_errors.h"
8 #include "net/disk_cache/mem_backend_impl.h" 8 #include "net/disk_cache/mem_backend_impl.h"
9 9
10 using base::Time; 10 using base::Time;
11 11
12 namespace disk_cache { 12 namespace disk_cache {
13 13
14 MemEntryImpl::MemEntryImpl(MemBackendImpl* backend) { 14 MemEntryImpl::MemEntryImpl(MemBackendImpl* backend) {
15 doomed_ = false; 15 doomed_ = false;
16 backend_ = backend; 16 backend_ = backend;
17 ref_count_ = 0; 17 ref_count_ = 0;
18 data_size_[0] = data_size_[1] = 0; 18 for (int i = 0; i < NUM_STREAMS; i++)
19 data_size_[i] = 0;
19 } 20 }
20 21
21 MemEntryImpl::~MemEntryImpl() { 22 MemEntryImpl::~MemEntryImpl() {
22 backend_->ModifyStorageSize(data_size_[0], 0); 23 for (int i = 0; i < NUM_STREAMS; i++)
23 backend_->ModifyStorageSize(data_size_[1], 0); 24 backend_->ModifyStorageSize(data_size_[i], 0);
24 backend_->ModifyStorageSize(static_cast<int32>(key_.size()), 0); 25 backend_->ModifyStorageSize(static_cast<int32>(key_.size()), 0);
25 } 26 }
26 27
27 bool MemEntryImpl::CreateEntry(const std::string& key) { 28 bool MemEntryImpl::CreateEntry(const std::string& key) {
28 key_ = key; 29 key_ = key;
29 last_modified_ = Time::Now(); 30 last_modified_ = Time::Now();
30 last_used_ = Time::Now(); 31 last_used_ = Time::Now();
31 Open(); 32 Open();
32 backend_->ModifyStorageSize(0, static_cast<int32>(key.size())); 33 backend_->ModifyStorageSize(0, static_cast<int32>(key.size()));
33 return true; 34 return true;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 69
69 Time MemEntryImpl::GetLastUsed() const { 70 Time MemEntryImpl::GetLastUsed() const {
70 return last_used_; 71 return last_used_;
71 } 72 }
72 73
73 Time MemEntryImpl::GetLastModified() const { 74 Time MemEntryImpl::GetLastModified() const {
74 return last_modified_; 75 return last_modified_;
75 } 76 }
76 77
77 int32 MemEntryImpl::GetDataSize(int index) const { 78 int32 MemEntryImpl::GetDataSize(int index) const {
78 if (index < 0 || index > 1) 79 if (index < 0 || index >= NUM_STREAMS)
79 return 0; 80 return 0;
80 81
81 return data_size_[index]; 82 return data_size_[index];
82 } 83 }
83 84
84 int MemEntryImpl::ReadData(int index, int offset, char* buf, int buf_len, 85 int MemEntryImpl::ReadData(int index, int offset, char* buf, int buf_len,
85 net::CompletionCallback* completion_callback) { 86 net::CompletionCallback* completion_callback) {
86 if (index < 0 || index > 1) 87 if (index < 0 || index >= NUM_STREAMS)
87 return net::ERR_INVALID_ARGUMENT; 88 return net::ERR_INVALID_ARGUMENT;
88 89
89 int entry_size = GetDataSize(index); 90 int entry_size = GetDataSize(index);
90 if (offset >= entry_size || offset < 0 || !buf_len) 91 if (offset >= entry_size || offset < 0 || !buf_len)
91 return 0; 92 return 0;
92 93
93 if (buf_len < 0) 94 if (buf_len < 0)
94 return net::ERR_INVALID_ARGUMENT; 95 return net::ERR_INVALID_ARGUMENT;
95 96
96 if (offset + buf_len > entry_size) 97 if (offset + buf_len > entry_size)
97 buf_len = entry_size - offset; 98 buf_len = entry_size - offset;
98 99
99 UpdateRank(false); 100 UpdateRank(false);
100 101
101 memcpy(buf , &(data_[index])[offset], buf_len); 102 memcpy(buf , &(data_[index])[offset], buf_len);
102 return buf_len; 103 return buf_len;
103 } 104 }
104 105
105 int MemEntryImpl::WriteData(int index, int offset, const char* buf, int buf_len, 106 int MemEntryImpl::WriteData(int index, int offset, const char* buf, int buf_len,
106 net::CompletionCallback* completion_callback, 107 net::CompletionCallback* completion_callback,
107 bool truncate) { 108 bool truncate) {
108 if (index < 0 || index > 1) 109 if (index < 0 || index >= NUM_STREAMS)
109 return net::ERR_INVALID_ARGUMENT; 110 return net::ERR_INVALID_ARGUMENT;
110 111
111 if (offset < 0 || buf_len < 0) 112 if (offset < 0 || buf_len < 0)
112 return net::ERR_INVALID_ARGUMENT; 113 return net::ERR_INVALID_ARGUMENT;
113 114
114 int max_file_size = backend_->MaxFileSize(); 115 int max_file_size = backend_->MaxFileSize();
115 116
116 // offset of buf_len could be negative numbers. 117 // offset of buf_len could be negative numbers.
117 if (offset > max_file_size || buf_len > max_file_size || 118 if (offset > max_file_size || buf_len > max_file_size ||
118 offset + buf_len > max_file_size) { 119 offset + buf_len > max_file_size) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 170
170 if (modified) 171 if (modified)
171 last_modified_ = current; 172 last_modified_ = current;
172 173
173 if (!doomed_) 174 if (!doomed_)
174 backend_->UpdateRank(this); 175 backend_->UpdateRank(this);
175 } 176 }
176 177
177 } // namespace disk_cache 178 } // namespace disk_cache
178 179
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698