| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 GOOGLE_APIS_GCM_ENGINE_GCM_STORE_IMPL_H_ | 5 #ifndef GOOGLE_APIS_GCM_ENGINE_GCM_STORE_IMPL_H_ |
| 6 #define GOOGLE_APIS_GCM_ENGINE_GCM_STORE_IMPL_H_ | 6 #define GOOGLE_APIS_GCM_ENGINE_GCM_STORE_IMPL_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 | 22 |
| 23 class Encryptor; | 23 class Encryptor; |
| 24 | 24 |
| 25 // An implementation of GCM Store that uses LevelDB for persistence. | 25 // An implementation of GCM Store that uses LevelDB for persistence. |
| 26 // It performs all blocking operations on the blocking task runner, and posts | 26 // It performs all blocking operations on the blocking task runner, and posts |
| 27 // all callbacks to the thread on which the GCMStoreImpl is created. | 27 // all callbacks to the thread on which the GCMStoreImpl is created. |
| 28 class GCM_EXPORT GCMStoreImpl : public GCMStore { | 28 class GCM_EXPORT GCMStoreImpl : public GCMStore { |
| 29 public: | 29 public: |
| 30 GCMStoreImpl(const base::FilePath& path, | 30 GCMStoreImpl(const base::FilePath& path, |
| 31 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, | 31 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, |
| 32 scoped_ptr<Encryptor> encryptor); | 32 std::unique_ptr<Encryptor> encryptor); |
| 33 ~GCMStoreImpl() override; | 33 ~GCMStoreImpl() override; |
| 34 | 34 |
| 35 // Load the directory and pass the initial state back to caller. | 35 // Load the directory and pass the initial state back to caller. |
| 36 void Load(StoreOpenMode open_mode, const LoadCallback& callback) override; | 36 void Load(StoreOpenMode open_mode, const LoadCallback& callback) override; |
| 37 | 37 |
| 38 // Closes the GCM store. | 38 // Closes the GCM store. |
| 39 void Close() override; | 39 void Close() override; |
| 40 | 40 |
| 41 // Clears the GCM store of all data and destroys any LevelDB files associated | 41 // Clears the GCM store of all data and destroys any LevelDB files associated |
| 42 // with this store. | 42 // with this store. |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 // Injects a value to database. Only to be used for testing. | 114 // Injects a value to database. Only to be used for testing. |
| 115 void SetValueForTesting(const std::string& key, | 115 void SetValueForTesting(const std::string& key, |
| 116 const std::string& value, | 116 const std::string& value, |
| 117 const UpdateCallback& callback); | 117 const UpdateCallback& callback); |
| 118 | 118 |
| 119 private: | 119 private: |
| 120 typedef std::map<std::string, int> AppIdToMessageCountMap; | 120 typedef std::map<std::string, int> AppIdToMessageCountMap; |
| 121 | 121 |
| 122 // Continuation to update the per-app message counts after a load. | 122 // Continuation to update the per-app message counts after a load. |
| 123 void LoadContinuation(const LoadCallback& callback, | 123 void LoadContinuation(const LoadCallback& callback, |
| 124 scoped_ptr<LoadResult> result); | 124 std::unique_ptr<LoadResult> result); |
| 125 | 125 |
| 126 // Continuation to update the per-app message counts when adding messages. | 126 // Continuation to update the per-app message counts when adding messages. |
| 127 // In particular, if a message fails to add, the message count is decremented. | 127 // In particular, if a message fails to add, the message count is decremented. |
| 128 void AddOutgoingMessageContinuation(const UpdateCallback& callback, | 128 void AddOutgoingMessageContinuation(const UpdateCallback& callback, |
| 129 const std::string& app_id, | 129 const std::string& app_id, |
| 130 bool success); | 130 bool success); |
| 131 | 131 |
| 132 // Continuation to update the per-app message counts when removing messages. | 132 // Continuation to update the per-app message counts when removing messages. |
| 133 // Note: if doing a read-then-write when removing messages proves expensive, | 133 // Note: if doing a read-then-write when removing messages proves expensive, |
| 134 // an in-memory mapping of persisted message id to app could be maintained | 134 // an in-memory mapping of persisted message id to app could be maintained |
| (...skipping 12 matching lines...) Expand all Loading... |
| 147 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; | 147 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; |
| 148 | 148 |
| 149 base::WeakPtrFactory<GCMStoreImpl> weak_ptr_factory_; | 149 base::WeakPtrFactory<GCMStoreImpl> weak_ptr_factory_; |
| 150 | 150 |
| 151 DISALLOW_COPY_AND_ASSIGN(GCMStoreImpl); | 151 DISALLOW_COPY_AND_ASSIGN(GCMStoreImpl); |
| 152 }; | 152 }; |
| 153 | 153 |
| 154 } // namespace gcm | 154 } // namespace gcm |
| 155 | 155 |
| 156 #endif // GOOGLE_APIS_GCM_ENGINE_GCM_STORE_IMPL_H_ | 156 #endif // GOOGLE_APIS_GCM_ENGINE_GCM_STORE_IMPL_H_ |
| OLD | NEW |