diff options
Diffstat (limited to 'src/Instance.hxx')
-rw-r--r-- | src/Instance.hxx | 79 |
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 |