| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2017 eyeo GmbH | 3  * Copyright (C) 2006-2017 eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 #ifndef ADBLOCK_PLUS_FILE_SYSTEM_H | 18 #ifndef ADBLOCK_PLUS_IFILE_SYSTEM_H | 
| 19 #define ADBLOCK_PLUS_FILE_SYSTEM_H | 19 #define ADBLOCK_PLUS_IFILE_SYSTEM_H | 
| 20 | 20 | 
| 21 #include <istream> | 21 #include <istream> | 
| 22 #include <stdint.h> | 22 #include <stdint.h> | 
| 23 #include <string> | 23 #include <string> | 
| 24 #include <memory> | 24 #include <memory> | 
|  | 25 #include <vector> | 
| 25 | 26 | 
| 26 namespace AdblockPlus | 27 namespace AdblockPlus | 
| 27 { | 28 { | 
| 28   /** | 29   /** | 
| 29    * File system interface. | 30    * File system interface. | 
| 30    */ | 31    */ | 
| 31   class FileSystem | 32   class IFileSystem | 
| 32   { | 33   { | 
| 33   public: | 34   public: | 
| 34     /** | 35     /** | 
| 35      * Result of a stat operation, i.e.\ information about a file. | 36      * Result of a stat operation, i.e.\ information about a file. | 
| 36      */ | 37      */ | 
| 37     struct StatResult | 38     struct StatResult | 
| 38     { | 39     { | 
| 39       StatResult() | 40       StatResult() | 
| 40       { | 41       { | 
| 41         exists = false; | 42         exists = false; | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 58        * File is a regular file. | 59        * File is a regular file. | 
| 59        */ | 60        */ | 
| 60       bool isFile; | 61       bool isFile; | 
| 61 | 62 | 
| 62       /** | 63       /** | 
| 63        * POSIX time of the last modification. | 64        * POSIX time of the last modification. | 
| 64        */ | 65        */ | 
| 65       int64_t lastModified; | 66       int64_t lastModified; | 
| 66     }; | 67     }; | 
| 67 | 68 | 
| 68     virtual ~FileSystem() {} | 69     virtual ~IFileSystem() {} | 
|  | 70 | 
|  | 71     /** | 
|  | 72      * Default callback type for asynchronous filesystem calls. | 
|  | 73      * @param An error string. Empty is success. | 
|  | 74      */ | 
|  | 75     typedef std::function<void(const std::string&)> Callback; | 
|  | 76 | 
|  | 77     /** | 
|  | 78      * Callback type for the asynchronous Read call. | 
|  | 79      * @param Output char array with file content. | 
|  | 80      * @param An error string. Empty if success. | 
|  | 81      */ | 
|  | 82     typedef std::function<void(std::string&&, const std::string&)> ReadCallback; | 
| 69 | 83 | 
| 70     /** | 84     /** | 
| 71      * Reads from a file. | 85      * Reads from a file. | 
| 72      * @param path File path. | 86      * @param path File path. | 
| 73      * @return Input stream with the file's contents. | 87      * @param callback The function called on completion with the input data. | 
| 74      */ | 88      */ | 
| 75     virtual std::shared_ptr<std::istream> | 89     virtual void Read(const std::string& path, | 
| 76       Read(const std::string& path) const = 0; | 90                       const ReadCallback& callback) const = 0; | 
| 77 | 91 | 
| 78     /** | 92     /** | 
| 79      * Writes to a file. | 93      * Writes to a file. | 
| 80      * @param path File path. | 94      * @param path File path. | 
| 81      * @param data Input stream with the data to write. | 95      * @param data Input stream with the data to write. | 
|  | 96      * @param callback The function called on completion. | 
| 82      */ | 97      */ | 
| 83     virtual void Write(const std::string& path, | 98     virtual void Write(const std::string& path, | 
| 84                        std::istream& data) = 0; | 99                        std::shared_ptr<std::istream> data, | 
|  | 100                        const Callback& callback) = 0; | 
| 85 | 101 | 
| 86     /** | 102     /** | 
| 87      * Moves a file (i.e.\ renames it). | 103      * Moves a file (i.e.\ renames it). | 
| 88      * @param fromPath Current path to the file. | 104      * @param fromPath Current path to the file. | 
| 89      * @param toPath New path to the file. | 105      * @param toPath New path to the file. | 
|  | 106      * @param callback The function called on completion. | 
| 90      */ | 107      */ | 
| 91     virtual void Move(const std::string& fromPath, | 108     virtual void Move(const std::string& fromPath, const std::string& toPath, | 
| 92                       const std::string& toPath) = 0; | 109                       const Callback& callback) = 0; | 
| 93 | 110 | 
| 94     /** | 111     /** | 
| 95      * Removes a file. | 112      * Removes a file. | 
| 96      * @param path File path. | 113      * @param path File path. | 
|  | 114      * @param callback The function called on completion. | 
| 97      */ | 115      */ | 
| 98     virtual void Remove(const std::string& path) = 0; | 116     virtual void Remove(const std::string& path, const Callback& callback) = 0; | 
|  | 117 | 
|  | 118     /** | 
|  | 119      * Callback type for the asynchronous Stat call. | 
|  | 120      * @param the StatResult data. | 
|  | 121      * @param an error string. Empty if no error. | 
|  | 122      */ | 
|  | 123     typedef std::function<void(const StatResult&, const std::string&)> StatCallb
     ack; | 
| 99 | 124 | 
| 100     /** | 125     /** | 
| 101      * Retrieves information about a file. | 126      * Retrieves information about a file. | 
| 102      * @param path File path. | 127      * @param path File path. | 
| 103      * @return File information. | 128      * @param callback The function called on completion. | 
| 104      */ | 129      */ | 
| 105     virtual StatResult Stat(const std::string& path) const = 0; | 130     virtual void Stat(const std::string& path, | 
|  | 131                       const StatCallback& callback) const = 0; | 
| 106 | 132 | 
| 107     /** | 133     /** | 
| 108      * Returns the absolute path to a file. | 134      * Returns the absolute path to a file. | 
| 109      * @param path File path (can be relative or absolute). | 135      * @param path File path (can be relative or absolute). | 
| 110      * @return Absolute file path. | 136      * @return Absolute file path. | 
| 111      */ | 137      */ | 
| 112     virtual std::string Resolve(const std::string& path) const = 0; | 138     virtual std::string Resolve(const std::string& path) const = 0; | 
| 113   }; | 139   }; | 
| 114 | 140 | 
| 115   /** | 141   /** | 
| 116    * Shared smart pointer to a `FileSystem` instance. | 142    * Shared smart pointer to a `IFileSystem` instance. | 
| 117    */ | 143    */ | 
| 118   typedef std::shared_ptr<FileSystem> FileSystemPtr; | 144   typedef std::shared_ptr<IFileSystem> FileSystemPtr; | 
| 119 } | 145 } | 
| 120 | 146 | 
| 121 #endif | 147 #endif | 
| OLD | NEW | 
|---|