From 297e2747f350aa0fbd941d4fccb0d3e09e3a49a9 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 7 Feb 2014 20:22:26 +0100 Subject: PlaylistMapper: use class Storage instead of Mapper.cxx --- src/playlist/PlaylistMapper.cxx | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/playlist/PlaylistMapper.cxx') diff --git a/src/playlist/PlaylistMapper.cxx b/src/playlist/PlaylistMapper.cxx index 141e0563f..bbcbaf1fe 100644 --- a/src/playlist/PlaylistMapper.cxx +++ b/src/playlist/PlaylistMapper.cxx @@ -24,6 +24,7 @@ #include "PlaylistRegistry.hxx" #include "Mapper.hxx" #include "fs/AllocatedPath.hxx" +#include "storage/StorageInterface.hxx" #include "util/UriUtil.hxx" #include @@ -57,21 +58,32 @@ playlist_open_in_playlist_dir(const char *uri, Mutex &mutex, Cond &cond) * Load a playlist from the configured music directory. */ static SongEnumerator * -playlist_open_in_music_dir(const char *uri, Mutex &mutex, Cond &cond) +playlist_open_in_storage(const char *uri, const Storage *storage, + Mutex &mutex, Cond &cond) { assert(uri_safe_local(uri)); - const auto path = map_uri_fs(uri); - if (path.IsNull()) + if (storage == nullptr) return nullptr; - return playlist_open_path(path.c_str(), mutex, cond); + { + const auto path = storage->MapFS(uri); + if (!path.IsNull()) + return playlist_open_path(path.c_str(), mutex, cond); + } + + const auto uri2 = storage->MapUTF8(uri); + return playlist_open_remote(uri, mutex, cond); } #endif SongEnumerator * -playlist_mapper_open(const char *uri, Mutex &mutex, Cond &cond) +playlist_mapper_open(const char *uri, +#ifdef ENABLE_DATABASE + const Storage *storage, +#endif + Mutex &mutex, Cond &cond) { if (spl_valid_name(uri)) { auto playlist = playlist_open_in_playlist_dir(uri, @@ -82,7 +94,8 @@ playlist_mapper_open(const char *uri, Mutex &mutex, Cond &cond) #ifdef ENABLE_DATABASE if (uri_safe_local(uri)) { - auto playlist = playlist_open_in_music_dir(uri, mutex, cond); + auto playlist = playlist_open_in_storage(uri, storage, + mutex, cond); if (playlist != nullptr) return playlist; } -- cgit v1.2.3