| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 CHROME_BROWSER_SYNC_SYNCABLE_DIRECTORY_BACKING_STORE_H_ | 5 #ifndef CHROME_BROWSER_SYNC_SYNCABLE_DIRECTORY_BACKING_STORE_H_ |
| 6 #define CHROME_BROWSER_SYNC_SYNCABLE_DIRECTORY_BACKING_STORE_H_ | 6 #define CHROME_BROWSER_SYNC_SYNCABLE_DIRECTORY_BACKING_STORE_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/file_path.h" |
| 10 #include "chrome/browser/sync/syncable/dir_open_result.h" | 11 #include "chrome/browser/sync/syncable/dir_open_result.h" |
| 11 #include "chrome/browser/sync/syncable/syncable.h" | 12 #include "chrome/browser/sync/syncable/syncable.h" |
| 12 | 13 |
| 13 extern "C" { | 14 extern "C" { |
| 14 struct sqlite3; | 15 struct sqlite3; |
| 15 struct sqlite3_stmt; | 16 struct sqlite3_stmt; |
| 16 } | 17 } |
| 17 | 18 |
| 18 namespace syncable { | 19 namespace syncable { |
| 19 | 20 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 38 // thread *must* be the thread that owns / is responsible for destroying | 39 // thread *must* be the thread that owns / is responsible for destroying |
| 39 // the DBS. | 40 // the DBS. |
| 40 // This way, any thread may open a Directory (which today can be either the | 41 // This way, any thread may open a Directory (which today can be either the |
| 41 // AuthWatcherThread or SyncCoreThread) and Load its DBS. The first time | 42 // AuthWatcherThread or SyncCoreThread) and Load its DBS. The first time |
| 42 // SaveChanges is called a new sqlite3 handle is created, and it will get closed | 43 // SaveChanges is called a new sqlite3 handle is created, and it will get closed |
| 43 // when the DBS is destroyed, which is the reason for the requirement that the | 44 // when the DBS is destroyed, which is the reason for the requirement that the |
| 44 // thread that "uses" the DBS is the thread that destroys it. | 45 // thread that "uses" the DBS is the thread that destroys it. |
| 45 class DirectoryBackingStore { | 46 class DirectoryBackingStore { |
| 46 public: | 47 public: |
| 47 DirectoryBackingStore(const PathString& dir_name, | 48 DirectoryBackingStore(const PathString& dir_name, |
| 48 const PathString& backing_filepath); | 49 const FilePath& backing_filepath); |
| 49 | 50 |
| 50 virtual ~DirectoryBackingStore(); | 51 virtual ~DirectoryBackingStore(); |
| 51 | 52 |
| 52 // Loads and drops all currently persisted meta entries into | 53 // Loads and drops all currently persisted meta entries into |
| 53 // |entry_bucket|, all currently persisted xattrs in |xattrs_bucket|, | 54 // |entry_bucket|, all currently persisted xattrs in |xattrs_bucket|, |
| 54 // and loads appropriate persisted kernel info in |info_bucket|. | 55 // and loads appropriate persisted kernel info in |info_bucket|. |
| 55 // NOTE: On success (return value of OPENED), the buckets are populated with | 56 // NOTE: On success (return value of OPENED), the buckets are populated with |
| 56 // newly allocated items, meaning ownership is bestowed upon the caller. | 57 // newly allocated items, meaning ownership is bestowed upon the caller. |
| 57 DirOpenResult Load(MetahandlesIndex* entry_bucket, | 58 DirOpenResult Load(MetahandlesIndex* entry_bucket, |
| 58 ExtendedAttributes* xattrs_bucket, | 59 ExtendedAttributes* xattrs_bucket, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 // The handle to our sqlite on-disk store for initialization and loading, and | 107 // The handle to our sqlite on-disk store for initialization and loading, and |
| 107 // for saving changes periodically via SaveChanges, respectively. | 108 // for saving changes periodically via SaveChanges, respectively. |
| 108 // TODO(timsteele): We should only have one handle here. The reason we need | 109 // TODO(timsteele): We should only have one handle here. The reason we need |
| 109 // two at the moment is because the DB can be opened by either the AuthWatcher | 110 // two at the moment is because the DB can be opened by either the AuthWatcher |
| 110 // or SyncCore threads, but SaveChanges is always called by the latter. We | 111 // or SyncCore threads, but SaveChanges is always called by the latter. We |
| 111 // need to change initialization so the DB is only accessed from one thread. | 112 // need to change initialization so the DB is only accessed from one thread. |
| 112 sqlite3* load_dbhandle_; | 113 sqlite3* load_dbhandle_; |
| 113 sqlite3* save_dbhandle_; | 114 sqlite3* save_dbhandle_; |
| 114 | 115 |
| 115 PathString dir_name_; | 116 PathString dir_name_; |
| 116 PathString backing_filepath_; | 117 FilePath backing_filepath_; |
| 117 | 118 |
| 118 DISALLOW_COPY_AND_ASSIGN(DirectoryBackingStore); | 119 DISALLOW_COPY_AND_ASSIGN(DirectoryBackingStore); |
| 119 }; | 120 }; |
| 120 | 121 |
| 121 } // namespace syncable | 122 } // namespace syncable |
| 122 | 123 |
| 123 #endif // CHROME_BROWSER_SYNC_SYNCABLE_DIRECTORY_BACKING_STORE_H_ | 124 #endif // CHROME_BROWSER_SYNC_SYNCABLE_DIRECTORY_BACKING_STORE_H_ |
| OLD | NEW |