aboutsummaryrefslogtreecommitdiffstats
path: root/src/Instance.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Instance.hxx')
-rw-r--r--src/Instance.hxx79
1 files changed, 72 insertions, 7 deletions
diff --git a/src/Instance.hxx b/src/Instance.hxx
index a0dfd1b94..fa7711ab9 100644
--- a/src/Instance.hxx
+++ b/src/Instance.hxx
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2003-2013 The Music Player Daemon Project
+ * Copyright (C) 2003-2014 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
@@ -21,23 +21,76 @@
#define MPD_INSTANCE_HXX
#include "check.h"
+#include "Compiler.h"
+#ifdef ENABLE_NEIGHBOR_PLUGINS
+#include "neighbor/Listener.hxx"
+class NeighborGlue;
+#endif
+
+#ifdef ENABLE_DATABASE
+#include "db/DatabaseListener.hxx"
+class Database;
+class Storage;
+class UpdateService;
+#endif
+
+class EventLoop;
+class Error;
class ClientList;
struct Partition;
-struct Song;
-struct Instance {
+struct Instance final
+#if defined(ENABLE_DATABASE) || defined(ENABLE_NEIGHBOR_PLUGINS)
+ :
+#endif
+#ifdef ENABLE_DATABASE
+ public DatabaseListener
+#ifdef ENABLE_NEIGHBOR_PLUGINS
+ ,
+#endif
+#endif
+#ifdef ENABLE_NEIGHBOR_PLUGINS
+ public NeighborListener
+#endif
+{
+ EventLoop *event_loop;
+
+#ifdef ENABLE_NEIGHBOR_PLUGINS
+ NeighborGlue *neighbors;
+#endif
+
+#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;
+#endif
+
ClientList *client_list;
Partition *partition;
- void DeleteSong(const Song &song);
+ Instance() {
+#ifdef ENABLE_DATABASE
+ storage = nullptr;
+ update = nullptr;
+#endif
+ }
+#ifdef ENABLE_DATABASE
/**
- * The database has been modified. Propagate the change to
- * all subsystems.
+ * Returns the global #Database instance. May return nullptr
+ * if this MPD configuration has no database (no
+ * music_directory was configured).
*/
- void DatabaseModified();
+ Database *GetDatabase(Error &error);
+#endif
/**
* A tag in the play queue has been modified by the player
@@ -49,6 +102,18 @@ struct Instance {
* Synchronize the player with the play queue.
*/
void SyncWithPlayer();
+
+private:
+#ifdef ENABLE_DATABASE
+ virtual void OnDatabaseModified() override;
+ virtual void OnDatabaseSongRemoved(const LightSong &song) override;
+#endif
+
+#ifdef ENABLE_NEIGHBOR_PLUGINS
+ /* virtual methods from class NeighborListener */
+ virtual void FoundNeighbor(const NeighborInfo &info) override;
+ virtual void LostNeighbor(const NeighborInfo &info) override;
+#endif
};
#endif