diff options
author | Max Kellermann <max@duempel.org> | 2014-02-07 01:11:52 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-02-07 01:11:52 +0100 |
commit | b2e3fdef0f142eb0be9f14dccd934b6e41fbde16 (patch) | |
tree | 44576ada959a616a9b8f40956e85f2b6f7b0da73 /src/storage/plugins/LocalStorage.cxx | |
parent | c13810ebaa7075284691eb2add089ba407dfd1ea (diff) | |
download | mpd-b2e3fdef0f142eb0be9f14dccd934b6e41fbde16.tar.gz mpd-b2e3fdef0f142eb0be9f14dccd934b6e41fbde16.tar.xz mpd-b2e3fdef0f142eb0be9f14dccd934b6e41fbde16.zip |
storage/local: hide the class declarations
Hide inside CreateLocalStorage().
Diffstat (limited to 'src/storage/plugins/LocalStorage.cxx')
-rw-r--r-- | src/storage/plugins/LocalStorage.cxx | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/storage/plugins/LocalStorage.cxx b/src/storage/plugins/LocalStorage.cxx index 0d45c9dcc..23e87c1b5 100644 --- a/src/storage/plugins/LocalStorage.cxx +++ b/src/storage/plugins/LocalStorage.cxx @@ -19,9 +19,58 @@ #include "config.h" #include "LocalStorage.hxx" +#include "storage/StorageInterface.hxx" #include "storage/FileInfo.hxx" #include "util/Error.hxx" #include "fs/FileSystem.hxx" +#include "fs/AllocatedPath.hxx" +#include "fs/DirectoryReader.hxx" + +#include <string> + +class LocalDirectoryReader final : public StorageDirectoryReader { + AllocatedPath base_fs; + + DirectoryReader reader; + + std::string name_utf8; + +public: + LocalDirectoryReader(AllocatedPath &&_base_fs) + :base_fs(std::move(_base_fs)), reader(base_fs) {} + + bool HasFailed() { + return reader.HasFailed(); + } + + /* virtual methods from class StorageDirectoryReader */ + virtual const char *Read() override; + virtual bool GetInfo(bool follow, FileInfo &info, + Error &error) override; +}; + +class LocalStorage final : public Storage { + const std::string base_utf8; + const AllocatedPath base_fs; + +public: + LocalStorage(const char *_base_utf8, Path _base_fs) + :base_utf8(_base_utf8), base_fs(_base_fs) {} + + /* virtual methods from class Storage */ + virtual bool GetInfo(const char *uri_utf8, bool follow, FileInfo &info, + Error &error) override; + + virtual StorageDirectoryReader *OpenDirectory(const char *uri_utf8, + Error &error) override; + + virtual std::string MapUTF8(const char *uri_utf8) const override; + + virtual AllocatedPath MapFS(const char *uri_utf8) const override; + +private: + AllocatedPath MapFS(const char *uri_utf8, Error &error) const; +}; static bool Stat(Path path, bool follow, FileInfo &info, Error &error) @@ -144,3 +193,9 @@ LocalDirectoryReader::GetInfo(bool follow, FileInfo &info, Error &error) AllocatedPath::Build(base_fs, reader.GetEntry()); return Stat(path_fs, follow, info, error); } + +Storage * +CreateLocalStorage(const char *base_utf8, Path base_fs) +{ + return new LocalStorage(base_utf8, base_fs); +} |