| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 COMPONENTS_LEVELDB_LEVELDB_MOJO_PROXY_H_ | 5 #ifndef COMPONENTS_LEVELDB_LEVELDB_MOJO_PROXY_H_ |
| 6 #define COMPONENTS_LEVELDB_LEVELDB_MOJO_PROXY_H_ | 6 #define COMPONENTS_LEVELDB_LEVELDB_MOJO_PROXY_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 struct OpaqueLock; | 40 struct OpaqueLock; |
| 41 | 41 |
| 42 // A private struct to hide the underlying root directory that we're | 42 // A private struct to hide the underlying root directory that we're |
| 43 // operating in. LevelDBMojoProxy will want to own all the directory | 43 // operating in. LevelDBMojoProxy will want to own all the directory |
| 44 // pointers, so while opening a database, we pass the directory to the thread | 44 // pointers, so while opening a database, we pass the directory to the thread |
| 45 // it will be operated on. | 45 // it will be operated on. |
| 46 struct OpaqueDir; | 46 struct OpaqueDir; |
| 47 | 47 |
| 48 // Passes ownership of a |directory| to the other thread, giving a reference | 48 // Passes ownership of a |directory| to the other thread, giving a reference |
| 49 // handle back to the caller. | 49 // handle back to the caller. |
| 50 OpaqueDir* RegisterDirectory(filesystem::DirectoryPtr directory); | 50 OpaqueDir* RegisterDirectory(filesystem::mojom::DirectoryPtr directory); |
| 51 void UnregisterDirectory(OpaqueDir* dir); | 51 void UnregisterDirectory(OpaqueDir* dir); |
| 52 | 52 |
| 53 // Synchronously calls Directory.OpenFileHandle(). | 53 // Synchronously calls Directory.OpenFileHandle(). |
| 54 base::File OpenFileHandle(OpaqueDir* dir, | 54 base::File OpenFileHandle(OpaqueDir* dir, |
| 55 const std::string& name, | 55 const std::string& name, |
| 56 uint32_t open_flags); | 56 uint32_t open_flags); |
| 57 | 57 |
| 58 // Synchronously syncs |directory_|. | 58 // Synchronously syncs |directory_|. |
| 59 filesystem::FileError SyncDirectory(OpaqueDir* dir, const std::string& name); | 59 filesystem::mojom::FileError SyncDirectory(OpaqueDir* dir, |
| 60 const std::string& name); |
| 60 | 61 |
| 61 // Synchronously checks whether |name| exists. | 62 // Synchronously checks whether |name| exists. |
| 62 bool FileExists(OpaqueDir* dir, const std::string& name); | 63 bool FileExists(OpaqueDir* dir, const std::string& name); |
| 63 | 64 |
| 64 // Synchronously returns the filenames of all files in |path|. | 65 // Synchronously returns the filenames of all files in |path|. |
| 65 filesystem::FileError GetChildren(OpaqueDir* dir, | 66 filesystem::mojom::FileError GetChildren(OpaqueDir* dir, |
| 66 const std::string& path, | 67 const std::string& path, |
| 67 std::vector<std::string>* result); | 68 std::vector<std::string>* result); |
| 68 | 69 |
| 69 // Synchronously deletes |path|. | 70 // Synchronously deletes |path|. |
| 70 filesystem::FileError Delete(OpaqueDir* dir, | 71 filesystem::mojom::FileError Delete(OpaqueDir* dir, |
| 71 const std::string& path, | 72 const std::string& path, |
| 72 uint32_t delete_flags); | 73 uint32_t delete_flags); |
| 73 | 74 |
| 74 // Synchronously creates |path|. | 75 // Synchronously creates |path|. |
| 75 filesystem::FileError CreateDir(OpaqueDir* dir, const std::string& path); | 76 filesystem::mojom::FileError CreateDir(OpaqueDir* dir, |
| 77 const std::string& path); |
| 76 | 78 |
| 77 // Synchronously gets the size of a file. | 79 // Synchronously gets the size of a file. |
| 78 filesystem::FileError GetFileSize(OpaqueDir* dir, | 80 filesystem::mojom::FileError GetFileSize(OpaqueDir* dir, |
| 79 const std::string& path, | 81 const std::string& path, |
| 80 uint64_t* file_size); | 82 uint64_t* file_size); |
| 81 | 83 |
| 82 // Synchronously renames a file. | 84 // Synchronously renames a file. |
| 83 filesystem::FileError RenameFile(OpaqueDir* dir, | 85 filesystem::mojom::FileError RenameFile(OpaqueDir* dir, |
| 84 const std::string& old_path, | 86 const std::string& old_path, |
| 85 const std::string& new_path); | 87 const std::string& new_path); |
| 86 | 88 |
| 87 // Synchronously locks a file. Returns both the file return code, and if OK, | 89 // Synchronously locks a file. Returns both the file return code, and if OK, |
| 88 // an opaque object to the lock to enforce going through this interface to | 90 // an opaque object to the lock to enforce going through this interface to |
| 89 // unlock the file so that unlocking happens on the correct thread. | 91 // unlock the file so that unlocking happens on the correct thread. |
| 90 std::pair<filesystem::FileError, OpaqueLock*> LockFile( | 92 std::pair<filesystem::mojom::FileError, OpaqueLock*> LockFile( |
| 91 OpaqueDir* dir, | 93 OpaqueDir* dir, |
| 92 const std::string& path); | 94 const std::string& path); |
| 93 | 95 |
| 94 // Unlocks a file. LevelDBMojoProxy takes ownership of lock. (We don't make | 96 // Unlocks a file. LevelDBMojoProxy takes ownership of lock. (We don't make |
| 95 // this a scoped_ptr because exporting the ctor/dtor for this struct publicly | 97 // this a scoped_ptr because exporting the ctor/dtor for this struct publicly |
| 96 // defeats the purpose of the struct.) | 98 // defeats the purpose of the struct.) |
| 97 filesystem::FileError UnlockFile(OpaqueLock* lock); | 99 filesystem::mojom::FileError UnlockFile(OpaqueLock* lock); |
| 98 | 100 |
| 99 private: | 101 private: |
| 100 friend class base::RefCountedThreadSafe<LevelDBMojoProxy>; | 102 friend class base::RefCountedThreadSafe<LevelDBMojoProxy>; |
| 101 ~LevelDBMojoProxy(); | 103 ~LevelDBMojoProxy(); |
| 102 | 104 |
| 103 void RunInternal(const base::Closure& task); | 105 void RunInternal(const base::Closure& task); |
| 104 | 106 |
| 105 void DoOnOtherThread(const base::Closure& c, base::WaitableEvent* event); | 107 void DoOnOtherThread(const base::Closure& c, base::WaitableEvent* event); |
| 106 | 108 |
| 107 // Implementation methods of the public interface. Depending on whether they | 109 // Implementation methods of the public interface. Depending on whether they |
| 108 // were called from the thread that |task_runner_| is, these might be run | 110 // were called from the thread that |task_runner_| is, these might be run |
| 109 // on the current thread or through PostTask(). | 111 // on the current thread or through PostTask(). |
| 110 void RegisterDirectoryImpl( | 112 void RegisterDirectoryImpl( |
| 111 mojo::InterfacePtrInfo<filesystem::Directory> directory_info, | 113 mojo::InterfacePtrInfo<filesystem::mojom::Directory> directory_info, |
| 112 OpaqueDir** out_dir); | 114 OpaqueDir** out_dir); |
| 113 void UnregisterDirectoryImpl(OpaqueDir* dir); | 115 void UnregisterDirectoryImpl(OpaqueDir* dir); |
| 114 void OpenFileHandleImpl(OpaqueDir* dir, | 116 void OpenFileHandleImpl(OpaqueDir* dir, |
| 115 std::string name, | 117 std::string name, |
| 116 uint32_t open_flags, | 118 uint32_t open_flags, |
| 117 base::File* out_file); | 119 base::File* out_file); |
| 118 void SyncDirectoryImpl(OpaqueDir* dir, | 120 void SyncDirectoryImpl(OpaqueDir* dir, |
| 119 std::string name, | 121 std::string name, |
| 120 filesystem::FileError* out_error); | 122 filesystem::mojom::FileError* out_error); |
| 121 void FileExistsImpl(OpaqueDir* dir, | 123 void FileExistsImpl(OpaqueDir* dir, |
| 122 std::string name, | 124 std::string name, |
| 123 bool* exists); | 125 bool* exists); |
| 124 void GetChildrenImpl(OpaqueDir* dir, | 126 void GetChildrenImpl(OpaqueDir* dir, |
| 125 std::string name, | 127 std::string name, |
| 126 std::vector<std::string>* contents, | 128 std::vector<std::string>* contents, |
| 127 filesystem::FileError* out_error); | 129 filesystem::mojom::FileError* out_error); |
| 128 void DeleteImpl(OpaqueDir* dir, | 130 void DeleteImpl(OpaqueDir* dir, |
| 129 std::string name, | 131 std::string name, |
| 130 uint32_t delete_flags, | 132 uint32_t delete_flags, |
| 131 filesystem::FileError* out_error); | 133 filesystem::mojom::FileError* out_error); |
| 132 void CreateDirImpl(OpaqueDir* dir, | 134 void CreateDirImpl(OpaqueDir* dir, |
| 133 std::string name, | 135 std::string name, |
| 134 filesystem::FileError* out_error); | 136 filesystem::mojom::FileError* out_error); |
| 135 void GetFileSizeImpl(OpaqueDir* dir, | 137 void GetFileSizeImpl(OpaqueDir* dir, |
| 136 const std::string& path, | 138 const std::string& path, |
| 137 uint64_t* file_size, | 139 uint64_t* file_size, |
| 138 filesystem::FileError* out_error); | 140 filesystem::mojom::FileError* out_error); |
| 139 void RenameFileImpl(OpaqueDir* dir, | 141 void RenameFileImpl(OpaqueDir* dir, |
| 140 const std::string& old_path, | 142 const std::string& old_path, |
| 141 const std::string& new_path, | 143 const std::string& new_path, |
| 142 filesystem::FileError* out_error); | 144 filesystem::mojom::FileError* out_error); |
| 143 void LockFileImpl(OpaqueDir* dir, | 145 void LockFileImpl(OpaqueDir* dir, |
| 144 const std::string& path, | 146 const std::string& path, |
| 145 filesystem::FileError* out_error, | 147 filesystem::mojom::FileError* out_error, |
| 146 OpaqueLock** out_lock); | 148 OpaqueLock** out_lock); |
| 147 void UnlockFileImpl(std::unique_ptr<OpaqueLock> lock, | 149 void UnlockFileImpl(std::unique_ptr<OpaqueLock> lock, |
| 148 filesystem::FileError* out_error); | 150 filesystem::mojom::FileError* out_error); |
| 149 | 151 |
| 150 // The task runner which represents the thread that all mojo objects are | 152 // The task runner which represents the thread that all mojo objects are |
| 151 // bound to. | 153 // bound to. |
| 152 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 154 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 153 | 155 |
| 154 int outstanding_opaque_dirs_; | 156 int outstanding_opaque_dirs_; |
| 155 | 157 |
| 156 DISALLOW_COPY_AND_ASSIGN(LevelDBMojoProxy); | 158 DISALLOW_COPY_AND_ASSIGN(LevelDBMojoProxy); |
| 157 }; | 159 }; |
| 158 | 160 |
| 159 } // namespace leveldb | 161 } // namespace leveldb |
| 160 | 162 |
| 161 #endif // COMPONENTS_LEVELDB_LEVELDB_MOJO_PROXY_H_ | 163 #endif // COMPONENTS_LEVELDB_LEVELDB_MOJO_PROXY_H_ |
| OLD | NEW |