Home | History | Annotate | Download | only in syncable
      1 // Copyright 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef SYNC_SYNCABLE_IN_MEMORY_DIRECTORY_BACKING_STORE_H_
      6 #define SYNC_SYNCABLE_IN_MEMORY_DIRECTORY_BACKING_STORE_H_
      7 
      8 #include "sync/syncable/directory_backing_store.h"
      9 #include "sync/base/sync_export.h"
     10 
     11 namespace syncer {
     12 namespace syncable {
     13 
     14 // This implementation of DirectoryBackingStore is used in tests that do not
     15 // require us to write to a file.  An in-memory sqlite database is much faster
     16 // than an on-disk database, so this can result in significant speedups in our
     17 // unit tests.
     18 //
     19 // An InMemoryDirectoryBackingStore cannot load data from existing databases.
     20 // When an InMemoryDirectoryBackingStore is destroyed, all data stored in this
     21 // database is lost.  If these limitations are a problem for you, consider using
     22 // TestDirectoryBackingStore.
     23 class SYNC_EXPORT_PRIVATE InMemoryDirectoryBackingStore
     24     : public DirectoryBackingStore {
     25  public:
     26   explicit InMemoryDirectoryBackingStore(const std::string& dir_name);
     27   virtual DirOpenResult Load(
     28       Directory::MetahandlesMap* handles_map,
     29       JournalIndex* delete_journals,
     30       Directory::KernelLoadInfo* kernel_load_info) OVERRIDE;
     31 
     32   void request_consistent_cache_guid() {
     33     consistent_cache_guid_requested_ = true;
     34   }
     35 
     36  private:
     37   bool consistent_cache_guid_requested_;
     38 
     39   DISALLOW_COPY_AND_ASSIGN(InMemoryDirectoryBackingStore);
     40 };
     41 
     42 }  // namespace syncable
     43 }  // namespace syncer
     44 
     45 #endif  // SYNC_SYNCABLE_IN_MEMORY_DIRECTORY_BACKING_STORE_H_
     46