diff options
author | Max Kellermann <max@duempel.org> | 2014-02-27 18:51:28 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-02-27 20:49:13 +0100 |
commit | 2a16fc74fd354484a70efcc5b6dbfcdd73ee5f5a (patch) | |
tree | 787b0efd5f39ca58714c4a3b4ab5d46ad75e8156 | |
parent | f65254680a8521631ecdd722ff522f574da20d8f (diff) | |
download | mpd-2a16fc74fd354484a70efcc5b6dbfcdd73ee5f5a.tar.gz mpd-2a16fc74fd354484a70efcc5b6dbfcdd73ee5f5a.tar.xz mpd-2a16fc74fd354484a70efcc5b6dbfcdd73ee5f5a.zip |
CompositeStorage: add method GetMount()
-rw-r--r-- | src/storage/CompositeStorage.cxx | 13 | ||||
-rw-r--r-- | src/storage/CompositeStorage.hxx | 11 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/storage/CompositeStorage.cxx b/src/storage/CompositeStorage.cxx index 9a27270df..ac6fcecd9 100644 --- a/src/storage/CompositeStorage.cxx +++ b/src/storage/CompositeStorage.cxx @@ -210,6 +210,19 @@ CompositeStorage::~CompositeStorage() { } +Storage * +CompositeStorage::GetMount(const char *uri) +{ + const ScopeLock protect(mutex); + + auto result = FindStorage(uri); + if (*result.uri != 0) + /* not a mount point */ + return nullptr; + + return result.directory->storage; +} + void CompositeStorage::Mount(const char *uri, Storage *storage) { diff --git a/src/storage/CompositeStorage.hxx b/src/storage/CompositeStorage.hxx index 9c10f76f4..3daa45ee3 100644 --- a/src/storage/CompositeStorage.hxx +++ b/src/storage/CompositeStorage.hxx @@ -96,6 +96,17 @@ public: virtual ~CompositeStorage(); /** + * Get the #Storage at the specified mount point. Returns + * nullptr if the given URI is not a mount point. + * + * The returned pointer is unprotected. No other thread is + * allowed to unmount the given mount point while the return + * value is being used. + */ + gcc_pure gcc_nonnull_all + Storage *GetMount(const char *uri); + + /** * Call the given function for each mounted storage, including * the root storage. Passes mount point URI and the a const * Storage reference to the function. |