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

Side by Side Diff: net/disk_cache/entry_impl.h

Issue 178023: Disk cache: Add a histogram to measure the latency of... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 3 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
« no previous file with comments | « no previous file | net/disk_cache/entry_impl.cc » ('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) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 #ifndef NET_DISK_CACHE_ENTRY_IMPL_H_ 5 #ifndef NET_DISK_CACHE_ENTRY_IMPL_H_
6 #define NET_DISK_CACHE_ENTRY_IMPL_H_ 6 #define NET_DISK_CACHE_ENTRY_IMPL_H_
7 7
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "net/disk_cache/disk_cache.h" 9 #include "net/disk_cache/disk_cache.h"
10 #include "net/disk_cache/storage_block.h" 10 #include "net/disk_cache/storage_block.h"
11 #include "net/disk_cache/storage_block-inl.h" 11 #include "net/disk_cache/storage_block-inl.h"
12 12
13 namespace disk_cache { 13 namespace disk_cache {
14 14
15 class BackendImpl; 15 class BackendImpl;
16 class SparseControl; 16 class SparseControl;
17 17
18 // This class implements the Entry interface. An object of this 18 // This class implements the Entry interface. An object of this
19 // class represents a single entry on the cache. 19 // class represents a single entry on the cache.
20 class EntryImpl : public Entry, public base::RefCounted<EntryImpl> { 20 class EntryImpl : public Entry, public base::RefCounted<EntryImpl> {
21 friend class base::RefCounted<EntryImpl>; 21 friend class base::RefCounted<EntryImpl>;
22 friend class SparseControl; 22 friend class SparseControl;
23 public: 23 public:
24 enum Operation {
darin (slow to review) 2009/08/28 23:14:37 nit: though kFoo is encouraged by the style guide,
25 kRead,
26 kWrite,
27 kSparseRead,
28 kSparseWrite,
29 kAsyncIO
30 };
31
24 EntryImpl(BackendImpl* backend, Addr address); 32 EntryImpl(BackendImpl* backend, Addr address);
25 33
26 // Entry interface. 34 // Entry interface.
27 virtual void Doom(); 35 virtual void Doom();
28 virtual void Close(); 36 virtual void Close();
29 virtual std::string GetKey() const; 37 virtual std::string GetKey() const;
30 virtual base::Time GetLastUsed() const; 38 virtual base::Time GetLastUsed() const;
31 virtual base::Time GetLastModified() const; 39 virtual base::Time GetLastModified() const;
32 virtual int32 GetDataSize(int index) const; 40 virtual int32 GetDataSize(int index) const;
33 virtual int ReadData(int index, int offset, net::IOBuffer* buf, int buf_len, 41 virtual int ReadData(int index, int offset, net::IOBuffer* buf, int buf_len,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 bool SanityCheck(); 100 bool SanityCheck();
93 101
94 // Handle the pending asynchronous IO count. 102 // Handle the pending asynchronous IO count.
95 void IncrementIoCount(); 103 void IncrementIoCount();
96 void DecrementIoCount(); 104 void DecrementIoCount();
97 105
98 // Set the access times for this entry. This method provides support for 106 // Set the access times for this entry. This method provides support for
99 // the upgrade tool. 107 // the upgrade tool.
100 void SetTimes(base::Time last_used, base::Time last_modified); 108 void SetTimes(base::Time last_used, base::Time last_modified);
101 109
110 // Generates a histogram for the time spent working on this operation.
111 void ReportIOTime(Operation op, const base::Time& start);
112
102 private: 113 private:
103 enum { 114 enum {
104 kNumStreams = 3 115 kNumStreams = 3
105 }; 116 };
106 117
107 enum Operation {
108 kRead,
109 kWrite,
110 kSparseRead,
111 kSparseWrite
112 };
113
114 ~EntryImpl(); 118 ~EntryImpl();
115 119
116 // Initializes the storage for an internal or external data block. 120 // Initializes the storage for an internal or external data block.
117 bool CreateDataBlock(int index, int size); 121 bool CreateDataBlock(int index, int size);
118 122
119 // Initializes the storage for an internal or external generic block. 123 // Initializes the storage for an internal or external generic block.
120 bool CreateBlock(int size, Addr* address); 124 bool CreateBlock(int size, Addr* address);
121 125
122 // Deletes the data pointed by address, maybe backed by files_[index]. 126 // Deletes the data pointed by address, maybe backed by files_[index].
123 void DeleteData(Addr address, int index); 127 void DeleteData(Addr address, int index);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 // Gets the data stored at the given index. If the information is in memory, 163 // Gets the data stored at the given index. If the information is in memory,
160 // a buffer will be allocated and the data will be copied to it (the caller 164 // a buffer will be allocated and the data will be copied to it (the caller
161 // can find out the size of the buffer before making this call). Otherwise, 165 // can find out the size of the buffer before making this call). Otherwise,
162 // the cache address of the data will be returned, and that address will be 166 // the cache address of the data will be returned, and that address will be
163 // removed from the regular book keeping of this entry so the caller is 167 // removed from the regular book keeping of this entry so the caller is
164 // responsible for deleting the block (or file) from the backing store at some 168 // responsible for deleting the block (or file) from the backing store at some
165 // point; there is no need to report any storage-size change, only to do the 169 // point; there is no need to report any storage-size change, only to do the
166 // actual cleanup. 170 // actual cleanup.
167 void GetData(int index, char** buffer, Addr* address); 171 void GetData(int index, char** buffer, Addr* address);
168 172
169 // Generates a histogram for the time spent working on this operation.
170 void ReportIOTime(Operation op, const base::Time& start);
171
172 // Logs this entry to the internal trace buffer. 173 // Logs this entry to the internal trace buffer.
173 void Log(const char* msg); 174 void Log(const char* msg);
174 175
175 CacheEntryBlock entry_; // Key related information for this entry. 176 CacheEntryBlock entry_; // Key related information for this entry.
176 CacheRankingsBlock node_; // Rankings related information for this entry. 177 CacheRankingsBlock node_; // Rankings related information for this entry.
177 BackendImpl* backend_; // Back pointer to the cache. 178 BackendImpl* backend_; // Back pointer to the cache.
178 scoped_array<char> user_buffers_[kNumStreams]; // Store user data. 179 scoped_array<char> user_buffers_[kNumStreams]; // Store user data.
179 // Files to store external user data and key. 180 // Files to store external user data and key.
180 scoped_refptr<File> files_[kNumStreams + 1]; 181 scoped_refptr<File> files_[kNumStreams + 1];
181 // Copy of the file used to store the key. We don't own this object. 182 // Copy of the file used to store the key. We don't own this object.
182 mutable File* key_file_; 183 mutable File* key_file_;
183 int unreported_size_[kNumStreams]; // Bytes not reported yet to the backend. 184 int unreported_size_[kNumStreams]; // Bytes not reported yet to the backend.
184 bool doomed_; // True if this entry was removed from the cache. 185 bool doomed_; // True if this entry was removed from the cache.
185 scoped_ptr<SparseControl> sparse_; // Support for sparse entries. 186 scoped_ptr<SparseControl> sparse_; // Support for sparse entries.
186 187
187 DISALLOW_EVIL_CONSTRUCTORS(EntryImpl); 188 DISALLOW_EVIL_CONSTRUCTORS(EntryImpl);
188 }; 189 };
189 190
190 } // namespace disk_cache 191 } // namespace disk_cache
191 192
192 #endif // NET_DISK_CACHE_ENTRY_IMPL_H_ 193 #endif // NET_DISK_CACHE_ENTRY_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | net/disk_cache/entry_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698