| OLD | NEW |
| 1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2010 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 // See net/disk_cache/disk_cache.h for the public interface of the cache. | 5 // See net/disk_cache/disk_cache.h for the public interface of the cache. |
| 6 | 6 |
| 7 #ifndef NET_DISK_CACHE_BACKEND_IMPL_H_ | 7 #ifndef NET_DISK_CACHE_BACKEND_IMPL_H_ |
| 8 #define NET_DISK_CACHE_BACKEND_IMPL_H_ | 8 #define NET_DISK_CACHE_BACKEND_IMPL_H_ |
| 9 #pragma once | 9 #pragma once |
| 10 | 10 |
| 11 #include "base/file_path.h" | 11 #include "base/file_path.h" |
| 12 #include "base/hash_tables.h" | 12 #include "base/hash_tables.h" |
| 13 #include "base/timer.h" | 13 #include "base/timer.h" |
| 14 #include "net/disk_cache/block_files.h" | 14 #include "net/disk_cache/block_files.h" |
| 15 #include "net/disk_cache/disk_cache.h" | 15 #include "net/disk_cache/disk_cache.h" |
| 16 #include "net/disk_cache/eviction.h" | 16 #include "net/disk_cache/eviction.h" |
| 17 #include "net/disk_cache/in_flight_backend_io.h" | 17 #include "net/disk_cache/in_flight_backend_io.h" |
| 18 #include "net/disk_cache/rankings.h" | 18 #include "net/disk_cache/rankings.h" |
| 19 #include "net/disk_cache/stats.h" | 19 #include "net/disk_cache/stats.h" |
| 20 #include "net/disk_cache/trace.h" | 20 #include "net/disk_cache/trace.h" |
| 21 | 21 |
| 22 namespace net { | |
| 23 class NetLog; | |
| 24 } // namespace net | |
| 25 | |
| 26 namespace disk_cache { | 22 namespace disk_cache { |
| 27 | 23 |
| 28 enum BackendFlags { | 24 enum BackendFlags { |
| 29 kNone = 0, | 25 kNone = 0, |
| 30 kMask = 1, // A mask (for the index table) was specified. | 26 kMask = 1, // A mask (for the index table) was specified. |
| 31 kMaxSize = 1 << 1, // A maximum size was provided. | 27 kMaxSize = 1 << 1, // A maximum size was provided. |
| 32 kUnitTestMode = 1 << 2, // We are modifying the behavior for testing. | 28 kUnitTestMode = 1 << 2, // We are modifying the behavior for testing. |
| 33 kUpgradeMode = 1 << 3, // This is the upgrade tool (dump). | 29 kUpgradeMode = 1 << 3, // This is the upgrade tool (dump). |
| 34 kNewEviction = 1 << 4, // Use of new eviction was specified. | 30 kNewEviction = 1 << 4, // Use of new eviction was specified. |
| 35 kNoRandom = 1 << 5, // Don't add randomness to the behavior. | 31 kNoRandom = 1 << 5, // Don't add randomness to the behavior. |
| 36 kNoLoadProtection = 1 << 6, // Don't act conservatively under load. | 32 kNoLoadProtection = 1 << 6, // Don't act conservatively under load. |
| 37 kNoBuffering = 1 << 7 // Disable extended IO buffering. | 33 kNoBuffering = 1 << 7 // Disable extended IO buffering. |
| 38 }; | 34 }; |
| 39 | 35 |
| 40 // This class implements the Backend interface. An object of this | 36 // This class implements the Backend interface. An object of this |
| 41 // class handles the operations of the cache for a particular profile. | 37 // class handles the operations of the cache for a particular profile. |
| 42 class BackendImpl : public Backend { | 38 class BackendImpl : public Backend { |
| 43 friend class Eviction; | 39 friend class Eviction; |
| 44 public: | 40 public: |
| 45 BackendImpl(const FilePath& path, base::MessageLoopProxy* cache_thread, | 41 BackendImpl(const FilePath& path, base::MessageLoopProxy* cache_thread); |
| 46 net::NetLog* net_log); | |
| 47 // mask can be used to limit the usable size of the hash table, for testing. | 42 // mask can be used to limit the usable size of the hash table, for testing. |
| 48 BackendImpl(const FilePath& path, uint32 mask, | 43 BackendImpl(const FilePath& path, uint32 mask, |
| 49 base::MessageLoopProxy* cache_thread, net::NetLog* net_log); | 44 base::MessageLoopProxy* cache_thread); |
| 50 ~BackendImpl(); | 45 ~BackendImpl(); |
| 51 | 46 |
| 52 // Returns a new backend with the desired flags. See the declaration of | 47 // Returns a new backend with the desired flags. See the declaration of |
| 53 // CreateCacheBackend(). | 48 // CreateCacheBackend(). |
| 54 static int CreateBackend(const FilePath& full_path, bool force, | 49 static int CreateBackend(const FilePath& full_path, bool force, |
| 55 int max_bytes, net::CacheType type, | 50 int max_bytes, net::CacheType type, |
| 56 uint32 flags, base::MessageLoopProxy* thread, | 51 uint32 flags, base::MessageLoopProxy* thread, |
| 57 net::NetLog* net_log, Backend** backend, | 52 Backend** backend, CompletionCallback* callback); |
| 58 CompletionCallback* callback); | |
| 59 | 53 |
| 60 // Performs general initialization for this current instance of the cache. | 54 // Performs general initialization for this current instance of the cache. |
| 61 int Init(CompletionCallback* callback); | 55 int Init(CompletionCallback* callback); |
| 62 | 56 |
| 63 // Backend interface. | 57 // Backend interface. |
| 64 virtual int32 GetEntryCount() const; | 58 virtual int32 GetEntryCount() const; |
| 65 virtual int OpenEntry(const std::string& key, Entry** entry, | 59 virtual int OpenEntry(const std::string& key, Entry** entry, |
| 66 CompletionCallback* callback); | 60 CompletionCallback* callback); |
| 67 virtual int CreateEntry(const std::string& key, Entry** entry, | 61 virtual int CreateEntry(const std::string& key, Entry** entry, |
| 68 CompletionCallback* callback); | 62 CompletionCallback* callback); |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 uint32 user_flags_; // Flags set by the user. | 350 uint32 user_flags_; // Flags set by the user. |
| 357 bool init_; // controls the initialization of the system. | 351 bool init_; // controls the initialization of the system. |
| 358 bool restarted_; | 352 bool restarted_; |
| 359 bool unit_test_; | 353 bool unit_test_; |
| 360 bool read_only_; // Prevents updates of the rankings data (used by tools). | 354 bool read_only_; // Prevents updates of the rankings data (used by tools). |
| 361 bool disabled_; | 355 bool disabled_; |
| 362 bool new_eviction_; // What eviction algorithm should be used. | 356 bool new_eviction_; // What eviction algorithm should be used. |
| 363 bool first_timer_; // True if the timer has not been called. | 357 bool first_timer_; // True if the timer has not been called. |
| 364 bool throttle_requests_; | 358 bool throttle_requests_; |
| 365 | 359 |
| 366 net::NetLog* net_log_; | |
| 367 | |
| 368 Stats stats_; // Usage statistcs. | 360 Stats stats_; // Usage statistcs. |
| 369 base::RepeatingTimer<BackendImpl> timer_; // Usage timer. | 361 base::RepeatingTimer<BackendImpl> timer_; // Usage timer. |
| 370 base::WaitableEvent done_; // Signals the end of background work. | 362 base::WaitableEvent done_; // Signals the end of background work. |
| 371 scoped_refptr<TraceObject> trace_object_; // Inits internal tracing. | 363 scoped_refptr<TraceObject> trace_object_; // Inits internal tracing. |
| 372 ScopedRunnableMethodFactory<BackendImpl> factory_; | 364 ScopedRunnableMethodFactory<BackendImpl> factory_; |
| 373 base::WeakPtrFactory<BackendImpl> ptr_factory_; | 365 base::WeakPtrFactory<BackendImpl> ptr_factory_; |
| 374 | 366 |
| 375 DISALLOW_COPY_AND_ASSIGN(BackendImpl); | 367 DISALLOW_COPY_AND_ASSIGN(BackendImpl); |
| 376 }; | 368 }; |
| 377 | 369 |
| 378 // Returns the prefered max cache size given the available disk space. | 370 // Returns the prefered max cache size given the available disk space. |
| 379 int PreferedCacheSize(int64 available); | 371 int PreferedCacheSize(int64 available); |
| 380 | 372 |
| 381 } // namespace disk_cache | 373 } // namespace disk_cache |
| 382 | 374 |
| 383 #endif // NET_DISK_CACHE_BACKEND_IMPL_H_ | 375 #endif // NET_DISK_CACHE_BACKEND_IMPL_H_ |
| OLD | NEW |