| OLD | NEW |
| 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 #ifndef NET_DISK_CACHE_BLOCKFILE_ENTRY_IMPL_H_ | 5 #ifndef NET_DISK_CACHE_BLOCKFILE_ENTRY_IMPL_H_ |
| 6 #define NET_DISK_CACHE_BLOCKFILE_ENTRY_IMPL_H_ | 6 #define NET_DISK_CACHE_BLOCKFILE_ENTRY_IMPL_H_ |
| 7 | 7 |
| 8 #include <stdint.h> |
| 9 |
| 8 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 9 #include "net/disk_cache/blockfile/disk_format.h" | 11 #include "net/disk_cache/blockfile/disk_format.h" |
| 10 #include "net/disk_cache/blockfile/storage_block-inl.h" | 12 #include "net/disk_cache/blockfile/storage_block-inl.h" |
| 11 #include "net/disk_cache/blockfile/storage_block.h" | 13 #include "net/disk_cache/blockfile/storage_block.h" |
| 12 #include "net/disk_cache/disk_cache.h" | 14 #include "net/disk_cache/disk_cache.h" |
| 13 #include "net/log/net_log.h" | 15 #include "net/log/net_log.h" |
| 14 | 16 |
| 15 namespace disk_cache { | 17 namespace disk_cache { |
| 16 | 18 |
| 17 class BackendImpl; | 19 class BackendImpl; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 39 }; | 41 }; |
| 40 | 42 |
| 41 EntryImpl(BackendImpl* backend, Addr address, bool read_only); | 43 EntryImpl(BackendImpl* backend, Addr address, bool read_only); |
| 42 | 44 |
| 43 // Background implementation of the Entry interface. | 45 // Background implementation of the Entry interface. |
| 44 void DoomImpl(); | 46 void DoomImpl(); |
| 45 int ReadDataImpl(int index, int offset, IOBuffer* buf, int buf_len, | 47 int ReadDataImpl(int index, int offset, IOBuffer* buf, int buf_len, |
| 46 const CompletionCallback& callback); | 48 const CompletionCallback& callback); |
| 47 int WriteDataImpl(int index, int offset, IOBuffer* buf, int buf_len, | 49 int WriteDataImpl(int index, int offset, IOBuffer* buf, int buf_len, |
| 48 const CompletionCallback& callback, bool truncate); | 50 const CompletionCallback& callback, bool truncate); |
| 49 int ReadSparseDataImpl(int64 offset, IOBuffer* buf, int buf_len, | 51 int ReadSparseDataImpl(int64_t offset, |
| 52 IOBuffer* buf, |
| 53 int buf_len, |
| 50 const CompletionCallback& callback); | 54 const CompletionCallback& callback); |
| 51 int WriteSparseDataImpl(int64 offset, IOBuffer* buf, int buf_len, | 55 int WriteSparseDataImpl(int64_t offset, |
| 56 IOBuffer* buf, |
| 57 int buf_len, |
| 52 const CompletionCallback& callback); | 58 const CompletionCallback& callback); |
| 53 int GetAvailableRangeImpl(int64 offset, int len, int64* start); | 59 int GetAvailableRangeImpl(int64_t offset, int len, int64_t* start); |
| 54 void CancelSparseIOImpl(); | 60 void CancelSparseIOImpl(); |
| 55 int ReadyForSparseIOImpl(const CompletionCallback& callback); | 61 int ReadyForSparseIOImpl(const CompletionCallback& callback); |
| 56 | 62 |
| 57 inline CacheEntryBlock* entry() { | 63 inline CacheEntryBlock* entry() { |
| 58 return &entry_; | 64 return &entry_; |
| 59 } | 65 } |
| 60 | 66 |
| 61 inline CacheRankingsBlock* rankings() { | 67 inline CacheRankingsBlock* rankings() { |
| 62 return &node_; | 68 return &node_; |
| 63 } | 69 } |
| 64 | 70 |
| 65 uint32 GetHash(); | 71 uint32_t GetHash(); |
| 66 | 72 |
| 67 // Performs the initialization of a EntryImpl that will be added to the | 73 // Performs the initialization of a EntryImpl that will be added to the |
| 68 // cache. | 74 // cache. |
| 69 bool CreateEntry(Addr node_address, const std::string& key, uint32 hash); | 75 bool CreateEntry(Addr node_address, const std::string& key, uint32_t hash); |
| 70 | 76 |
| 71 // Returns true if this entry matches the lookup arguments. | 77 // Returns true if this entry matches the lookup arguments. |
| 72 bool IsSameEntry(const std::string& key, uint32 hash); | 78 bool IsSameEntry(const std::string& key, uint32_t hash); |
| 73 | 79 |
| 74 // Permamently destroys this entry. | 80 // Permamently destroys this entry. |
| 75 void InternalDoom(); | 81 void InternalDoom(); |
| 76 | 82 |
| 77 // Deletes this entry from disk. If |everything| is false, only the user data | 83 // Deletes this entry from disk. If |everything| is false, only the user data |
| 78 // will be removed, leaving the key and control data intact. | 84 // will be removed, leaving the key and control data intact. |
| 79 void DeleteEntryData(bool everything); | 85 void DeleteEntryData(bool everything); |
| 80 | 86 |
| 81 // Returns the address of the next entry on the list of entries with the same | 87 // Returns the address of the next entry on the list of entries with the same |
| 82 // hash. | 88 // hash. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 97 bool dirty() { | 103 bool dirty() { |
| 98 return dirty_; | 104 return dirty_; |
| 99 } | 105 } |
| 100 | 106 |
| 101 bool doomed() { | 107 bool doomed() { |
| 102 return doomed_; | 108 return doomed_; |
| 103 } | 109 } |
| 104 | 110 |
| 105 // Marks this entry as dirty (in memory) if needed. This is intended only for | 111 // Marks this entry as dirty (in memory) if needed. This is intended only for |
| 106 // entries that are being read from disk, to be called during loading. | 112 // entries that are being read from disk, to be called during loading. |
| 107 void SetDirtyFlag(int32 current_id); | 113 void SetDirtyFlag(int32_t current_id); |
| 108 | 114 |
| 109 // Fixes this entry so it can be treated as valid (to delete it). | 115 // Fixes this entry so it can be treated as valid (to delete it). |
| 110 void SetPointerForInvalidEntry(int32 new_id); | 116 void SetPointerForInvalidEntry(int32_t new_id); |
| 111 | 117 |
| 112 // Returns true if this entry is so meesed up that not everything is going to | 118 // Returns true if this entry is so meesed up that not everything is going to |
| 113 // be removed. | 119 // be removed. |
| 114 bool LeaveRankingsBehind(); | 120 bool LeaveRankingsBehind(); |
| 115 | 121 |
| 116 // Returns false if the entry is clearly invalid. | 122 // Returns false if the entry is clearly invalid. |
| 117 bool SanityCheck(); | 123 bool SanityCheck(); |
| 118 bool DataSanityCheck(); | 124 bool DataSanityCheck(); |
| 119 | 125 |
| 120 // Attempts to make this entry reachable though the key. | 126 // Attempts to make this entry reachable though the key. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 145 | 151 |
| 146 // Returns the number of blocks needed to store an EntryStore. | 152 // Returns the number of blocks needed to store an EntryStore. |
| 147 static int NumBlocksForEntry(int key_size); | 153 static int NumBlocksForEntry(int key_size); |
| 148 | 154 |
| 149 // Entry interface. | 155 // Entry interface. |
| 150 void Doom() override; | 156 void Doom() override; |
| 151 void Close() override; | 157 void Close() override; |
| 152 std::string GetKey() const override; | 158 std::string GetKey() const override; |
| 153 base::Time GetLastUsed() const override; | 159 base::Time GetLastUsed() const override; |
| 154 base::Time GetLastModified() const override; | 160 base::Time GetLastModified() const override; |
| 155 int32 GetDataSize(int index) const override; | 161 int32_t GetDataSize(int index) const override; |
| 156 int ReadData(int index, | 162 int ReadData(int index, |
| 157 int offset, | 163 int offset, |
| 158 IOBuffer* buf, | 164 IOBuffer* buf, |
| 159 int buf_len, | 165 int buf_len, |
| 160 const CompletionCallback& callback) override; | 166 const CompletionCallback& callback) override; |
| 161 int WriteData(int index, | 167 int WriteData(int index, |
| 162 int offset, | 168 int offset, |
| 163 IOBuffer* buf, | 169 IOBuffer* buf, |
| 164 int buf_len, | 170 int buf_len, |
| 165 const CompletionCallback& callback, | 171 const CompletionCallback& callback, |
| 166 bool truncate) override; | 172 bool truncate) override; |
| 167 int ReadSparseData(int64 offset, | 173 int ReadSparseData(int64_t offset, |
| 168 IOBuffer* buf, | 174 IOBuffer* buf, |
| 169 int buf_len, | 175 int buf_len, |
| 170 const CompletionCallback& callback) override; | 176 const CompletionCallback& callback) override; |
| 171 int WriteSparseData(int64 offset, | 177 int WriteSparseData(int64_t offset, |
| 172 IOBuffer* buf, | 178 IOBuffer* buf, |
| 173 int buf_len, | 179 int buf_len, |
| 174 const CompletionCallback& callback) override; | 180 const CompletionCallback& callback) override; |
| 175 int GetAvailableRange(int64 offset, | 181 int GetAvailableRange(int64_t offset, |
| 176 int len, | 182 int len, |
| 177 int64* start, | 183 int64_t* start, |
| 178 const CompletionCallback& callback) override; | 184 const CompletionCallback& callback) override; |
| 179 bool CouldBeSparse() const override; | 185 bool CouldBeSparse() const override; |
| 180 void CancelSparseIO() override; | 186 void CancelSparseIO() override; |
| 181 int ReadyForSparseIO(const CompletionCallback& callback) override; | 187 int ReadyForSparseIO(const CompletionCallback& callback) override; |
| 182 | 188 |
| 183 private: | 189 private: |
| 184 enum { | 190 enum { |
| 185 kNumStreams = 3 | 191 kNumStreams = 3 |
| 186 }; | 192 }; |
| 187 class UserBuffer; | 193 class UserBuffer; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 // is determined based on the current data length and |min_len|. | 247 // is determined based on the current data length and |min_len|. |
| 242 bool Flush(int index, int min_len); | 248 bool Flush(int index, int min_len); |
| 243 | 249 |
| 244 // Updates the size of a given data stream. | 250 // Updates the size of a given data stream. |
| 245 void UpdateSize(int index, int old_size, int new_size); | 251 void UpdateSize(int index, int old_size, int new_size); |
| 246 | 252 |
| 247 // Initializes the sparse control object. Returns a net error code. | 253 // Initializes the sparse control object. Returns a net error code. |
| 248 int InitSparseData(); | 254 int InitSparseData(); |
| 249 | 255 |
| 250 // Adds the provided |flags| to the current EntryFlags for this entry. | 256 // Adds the provided |flags| to the current EntryFlags for this entry. |
| 251 void SetEntryFlags(uint32 flags); | 257 void SetEntryFlags(uint32_t flags); |
| 252 | 258 |
| 253 // Returns the current EntryFlags for this entry. | 259 // Returns the current EntryFlags for this entry. |
| 254 uint32 GetEntryFlags(); | 260 uint32_t GetEntryFlags(); |
| 255 | 261 |
| 256 // Gets the data stored at the given index. If the information is in memory, | 262 // Gets the data stored at the given index. If the information is in memory, |
| 257 // a buffer will be allocated and the data will be copied to it (the caller | 263 // a buffer will be allocated and the data will be copied to it (the caller |
| 258 // can find out the size of the buffer before making this call). Otherwise, | 264 // can find out the size of the buffer before making this call). Otherwise, |
| 259 // the cache address of the data will be returned, and that address will be | 265 // the cache address of the data will be returned, and that address will be |
| 260 // removed from the regular book keeping of this entry so the caller is | 266 // removed from the regular book keeping of this entry so the caller is |
| 261 // responsible for deleting the block (or file) from the backing store at some | 267 // responsible for deleting the block (or file) from the backing store at some |
| 262 // point; there is no need to report any storage-size change, only to do the | 268 // point; there is no need to report any storage-size change, only to do the |
| 263 // actual cleanup. | 269 // actual cleanup. |
| 264 void GetData(int index, char** buffer, Addr* address); | 270 void GetData(int index, char** buffer, Addr* address); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 281 scoped_ptr<SparseControl> sparse_; // Support for sparse entries. | 287 scoped_ptr<SparseControl> sparse_; // Support for sparse entries. |
| 282 | 288 |
| 283 net::BoundNetLog net_log_; | 289 net::BoundNetLog net_log_; |
| 284 | 290 |
| 285 DISALLOW_COPY_AND_ASSIGN(EntryImpl); | 291 DISALLOW_COPY_AND_ASSIGN(EntryImpl); |
| 286 }; | 292 }; |
| 287 | 293 |
| 288 } // namespace disk_cache | 294 } // namespace disk_cache |
| 289 | 295 |
| 290 #endif // NET_DISK_CACHE_BLOCKFILE_ENTRY_IMPL_H_ | 296 #endif // NET_DISK_CACHE_BLOCKFILE_ENTRY_IMPL_H_ |
| OLD | NEW |