aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-02-09 07:44:07 +0100
committerMax Kellermann <max@duempel.org>2014-02-09 11:07:08 +0100
commita9fefcf6008cd6dbefdd5bd1b3a49e093ae9dcf5 (patch)
tree48d05a139b59f9e86d78e31170e92072f45564d4
parent59ce67e2e55098c8cbe1707e8a32900128345315 (diff)
downloadmpd-a9fefcf6008cd6dbefdd5bd1b3a49e093ae9dcf5.tar.gz
mpd-a9fefcf6008cd6dbefdd5bd1b3a49e093ae9dcf5.tar.xz
mpd-a9fefcf6008cd6dbefdd5bd1b3a49e093ae9dcf5.zip
Main: wrap the Storage instance in CompositeStorage
-rw-r--r--src/Instance.hxx4
-rw-r--r--src/Main.cxx13
2 files changed, 15 insertions, 2 deletions
diff --git a/src/Instance.hxx b/src/Instance.hxx
index 131a71fc3..fa7711ab9 100644
--- a/src/Instance.hxx
+++ b/src/Instance.hxx
@@ -63,6 +63,10 @@ struct Instance final
#ifdef ENABLE_DATABASE
Database *database;
+ /**
+ * This is really a #CompositeStorage. To avoid heavy include
+ * dependencies, we declare it as just #Storage.
+ */
Storage *storage;
UpdateService *update;
diff --git a/src/Main.cxx b/src/Main.cxx
index 3a40f0bb0..edd670763 100644
--- a/src/Main.cxx
+++ b/src/Main.cxx
@@ -71,6 +71,7 @@
#include "db/DatabaseSimple.hxx"
#include "db/plugins/SimpleDatabasePlugin.hxx"
#include "storage/Configured.hxx"
+#include "storage/CompositeStorage.hxx"
#endif
#ifdef ENABLE_NEIGHBOR_PLUGINS
@@ -148,8 +149,16 @@ glue_mapper_init(Error &error)
static bool
InitStorage(Error &error)
{
- instance->storage = CreateConfiguredStorage(error);
- return !error.IsDefined();
+ Storage *storage = CreateConfiguredStorage(error);
+ if (storage == nullptr)
+ return !error.IsDefined();
+
+ assert(!error.IsDefined());
+
+ CompositeStorage *composite = new CompositeStorage();
+ instance->storage = composite;
+ composite->Mount("", storage);
+ return true;
}
/**