Chromium Code Reviews| Index: components/leveldb/env_mojo.h |
| diff --git a/components/leveldb/env_mojo.h b/components/leveldb/env_mojo.h |
| index d784803324321735652be12bd77c44540a4ae91b..12d1fd8f589c1a1432c20a2b6430b9d455922aa2 100644 |
| --- a/components/leveldb/env_mojo.h |
| +++ b/components/leveldb/env_mojo.h |
| @@ -5,6 +5,7 @@ |
| #ifndef COMPONENTS_LEVELDB_ENV_MOJO_H_ |
| #define COMPONENTS_LEVELDB_ENV_MOJO_H_ |
| +#include "base/id_map.h" |
| #include "components/filesystem/public/interfaces/directory.mojom.h" |
| #include "components/leveldb/leveldb_mojo_proxy.h" |
| #include "third_party/leveldatabase/env_chromium.h" |
| @@ -19,10 +20,29 @@ namespace leveldb { |
| // existence. |
| class MojoEnv : public leveldb_env::ChromiumEnv { |
| public: |
| - MojoEnv(const std::string& name, |
| - scoped_refptr<LevelDBMojoProxy> file_thread, |
| - LevelDBMojoProxy::OpaqueDir* dir); |
| - ~MojoEnv() override; |
| + class Directory { |
| + public: |
| + ~Directory(); |
| + const std::string& prefix() const { return prefix_; } |
| + |
| + private: |
| + friend class MojoEnv; |
| + Directory(MojoEnv* env, std::string prefix); |
| + MojoEnv* env_; |
| + std::string prefix_; |
| + }; |
| + |
| + explicit MojoEnv( |
| + scoped_refptr<base::SingleThreadTaskRunner> file_task_runner); |
| + |
| + // Registers a |directory| with the leveldb environment, returning a string |
| + // that should be used as prefix to indicate files in that directory. |
| + std::unique_ptr<Directory> RegisterDirectory( |
| + filesystem::mojom::DirectoryPtr directory); |
| + |
| + base::SingleThreadTaskRunner* file_task_runner() const { |
| + return thread_->task_runner(); |
| + } |
| // Overridden from leveldb_env::EnvChromium: |
|
cmumford
2017/04/12 23:06:39
I know it was there before, but s/EnvChromium/Chro
|
| Status NewSequentialFile(const std::string& fname, |
| @@ -50,8 +70,15 @@ class MojoEnv : public leveldb_env::ChromiumEnv { |
| // NowMicros() or SleepForMicroseconds() and use the EnvChromium versions. |
| private: |
| + ~MojoEnv() override; |
| + |
| + void ParsePath(const std::string& path, |
| + LevelDBMojoProxy::OpaqueDir** out_dir, |
| + std::string* out_path); |
| + void UnregisterDirectory(base::StringPiece prefix); |
| + |
| scoped_refptr<LevelDBMojoProxy> thread_; |
| - LevelDBMojoProxy::OpaqueDir* dir_; |
| + IDMap<LevelDBMojoProxy::OpaqueDir*> dirs_; |
| DISALLOW_COPY_AND_ASSIGN(MojoEnv); |
| }; |