diff --git a/Makefile.am b/Makefile.am index 845fc8f7b..2133a7a76 100644 --- a/Makefile.am +++ b/Makefile.am @@ -734,7 +734,6 @@ libdb_plugins_a_SOURCES = \ src/db/plugins/simple/DatabaseSave.hxx \ src/db/plugins/simple/DirectorySave.cxx \ src/db/plugins/simple/DirectorySave.hxx \ - src/db/plugins/LazyDatabase.cxx src/db/plugins/LazyDatabase.hxx \ src/db/plugins/simple/Directory.cxx \ src/db/plugins/simple/Directory.hxx \ src/db/plugins/simple/Song.cxx \ diff --git a/src/db/plugins/LazyDatabase.cxx b/src/db/plugins/LazyDatabase.cxx deleted file mode 100644 index 0fbaa8b6b..000000000 --- a/src/db/plugins/LazyDatabase.cxx +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2003-2016 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" -#include "LazyDatabase.hxx" -#include "db/Interface.hxx" - -#include - -LazyDatabase::LazyDatabase(Database *_db) - :Database(_db->GetPlugin()), db(_db), open(false) {} - -LazyDatabase::~LazyDatabase() -{ - assert(!open); - - delete db; -} - -bool -LazyDatabase::EnsureOpen(Error &error) const -{ - if (open) - return true; - - if (!db->Open(error)) - return false; - - open = true; - return true; -} - -void -LazyDatabase::Close() -{ - if (open) { - open = false; - db->Close(); - } -} - -const LightSong * -LazyDatabase::GetSong(const char *uri, Error &error) const -{ - return EnsureOpen(error) - ? db->GetSong(uri, error) - : nullptr; -} - -void -LazyDatabase::ReturnSong(const LightSong *song) const -{ - assert(open); - - db->ReturnSong(song); -} - -bool -LazyDatabase::Visit(const DatabaseSelection &selection, - VisitDirectory visit_directory, - VisitSong visit_song, - VisitPlaylist visit_playlist, - Error &error) const -{ - return EnsureOpen(error) && - db->Visit(selection, visit_directory, visit_song, - visit_playlist, error); -} - -bool -LazyDatabase::VisitUniqueTags(const DatabaseSelection &selection, - TagType tag_type, tag_mask_t group_mask, - VisitTag visit_tag, - Error &error) const -{ - return EnsureOpen(error) && - db->VisitUniqueTags(selection, tag_type, group_mask, visit_tag, - error); -} - -bool -LazyDatabase::GetStats(const DatabaseSelection &selection, - DatabaseStats &stats, Error &error) const -{ - return EnsureOpen(error) && db->GetStats(selection, stats, error); -} - -time_t -LazyDatabase::GetUpdateStamp() const -{ - return open ? db->GetUpdateStamp() : 0; -} diff --git a/src/db/plugins/LazyDatabase.hxx b/src/db/plugins/LazyDatabase.hxx deleted file mode 100644 index 021a8135d..000000000 --- a/src/db/plugins/LazyDatabase.hxx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2003-2016 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef MPD_LAZY_DATABASE_PLUGIN_HXX -#define MPD_LAZY_DATABASE_PLUGIN_HXX - -#include "db/Interface.hxx" -#include "Compiler.h" - -/** - * A wrapper for a #Database object that gets opened on the first - * database access. This works around daemonization problems with - * some plugins. - */ -class LazyDatabase final : public Database { - Database *const db; - - mutable bool open; - -public: - gcc_nonnull_all - LazyDatabase(Database *_db); - - virtual ~LazyDatabase(); - - virtual void Close() override; - - virtual const LightSong *GetSong(const char *uri_utf8, - Error &error) const override; - void ReturnSong(const LightSong *song) const override; - - virtual bool Visit(const DatabaseSelection &selection, - VisitDirectory visit_directory, - VisitSong visit_song, - VisitPlaylist visit_playlist, - Error &error) const override; - - virtual bool VisitUniqueTags(const DatabaseSelection &selection, - TagType tag_type, tag_mask_t group_mask, - VisitTag visit_tag, - Error &error) const override; - - virtual bool GetStats(const DatabaseSelection &selection, - DatabaseStats &stats, - Error &error) const override; - - virtual time_t GetUpdateStamp() const override; - -private: - bool EnsureOpen(Error &error) const; -}; - -#endif