aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-11-22 00:35:29 +0100
committerMax Kellermann <max@duempel.org>2013-11-22 00:35:29 +0100
commitc064e8d62f0d2b46159570f21708c2546970718d (patch)
tree42a242cec63c5c07c770db22552e77ddd1ee8a8d
parent099a2cb586524cf49dd3a9a0107ce003fd2e27e5 (diff)
downloadmpd-c064e8d62f0d2b46159570f21708c2546970718d.tar.gz
mpd-c064e8d62f0d2b46159570f21708c2546970718d.tar.xz
mpd-c064e8d62f0d2b46159570f21708c2546970718d.zip
DatabasePlugin: add method GetUpdateStamp()
Refactor SimpleDatabase::GetLastModified() to be generic for all plugins. Remove the SimpleDatabase assumption from db_stats_print(), allowing it to be implemented by all database plugins.
-rw-r--r--src/DatabaseGlue.cxx6
-rw-r--r--src/DatabasePlugin.hxx9
-rw-r--r--src/DatabaseSimple.hxx16
-rw-r--r--src/Stats.cxx5
-rw-r--r--src/db/ProxyDatabasePlugin.cxx5
-rw-r--r--src/db/SimpleDatabasePlugin.hxx11
6 files changed, 26 insertions, 26 deletions
diff --git a/src/DatabaseGlue.cxx b/src/DatabaseGlue.cxx
index e84503713..013a3e329 100644
--- a/src/DatabaseGlue.cxx
+++ b/src/DatabaseGlue.cxx
@@ -148,12 +148,12 @@ DatabaseGlobalOpen(Error &error)
return true;
}
-time_t
-db_get_mtime(void)
+bool
+db_exists()
{
assert(db != nullptr);
assert(db_is_open);
assert(db_is_simple());
- return ((SimpleDatabase *)db)->GetLastModified();
+ return ((SimpleDatabase *)db)->GetUpdateStamp() > 0;
}
diff --git a/src/DatabasePlugin.hxx b/src/DatabasePlugin.hxx
index 629dff329..ccf899389 100644
--- a/src/DatabasePlugin.hxx
+++ b/src/DatabasePlugin.hxx
@@ -30,6 +30,8 @@
#include "tag/TagType.h"
#include "Compiler.h"
+#include <time.h>
+
struct config_param;
struct DatabaseSelection;
struct db_visitor;
@@ -132,6 +134,13 @@ public:
virtual bool GetStats(const DatabaseSelection &selection,
DatabaseStats &stats,
Error &error) const = 0;
+
+ /**
+ * Returns the time stamp of the last database update.
+ * Returns 0 if that is not not known/available.
+ */
+ gcc_pure
+ virtual time_t GetUpdateStamp() const = 0;
};
struct DatabasePlugin {
diff --git a/src/DatabaseSimple.hxx b/src/DatabaseSimple.hxx
index 124d78a30..6d52ac0b3 100644
--- a/src/DatabaseSimple.hxx
+++ b/src/DatabaseSimple.hxx
@@ -63,24 +63,12 @@ bool
db_save(Error &error);
/**
- * May only be used if db_is_simple() returns true.
- */
-gcc_pure
-time_t
-db_get_mtime(void);
-
-/**
* Returns true if there is a valid database file on the disk.
*
* May only be used if db_is_simple() returns true.
*/
gcc_pure
-static inline bool
-db_exists(void)
-{
- /* mtime is set only if the database file was loaded or saved
- successfully */
- return db_get_mtime() > 0;
-}
+bool
+db_exists();
#endif
diff --git a/src/Stats.cxx b/src/Stats.cxx
index d2d18d6a9..f224bdf49 100644
--- a/src/Stats.cxx
+++ b/src/Stats.cxx
@@ -83,10 +83,11 @@ db_stats_print(Client &client)
stats.song_count,
stats.total_duration);
- if (db_is_simple())
+ const time_t update_stamp = GetDatabase()->GetUpdateStamp();
+ if (update_stamp > 0)
client_printf(client,
"db_update: %lu\n",
- (unsigned long)db_get_mtime());
+ (unsigned long)update_stamp);
}
void
diff --git a/src/db/ProxyDatabasePlugin.cxx b/src/db/ProxyDatabasePlugin.cxx
index fc99242ee..d4861623f 100644
--- a/src/db/ProxyDatabasePlugin.cxx
+++ b/src/db/ProxyDatabasePlugin.cxx
@@ -71,6 +71,11 @@ public:
DatabaseStats &stats,
Error &error) const override;
+ virtual time_t GetUpdateStamp() const override {
+ // TODO: implement
+ return 0;
+ }
+
private:
bool Configure(const config_param &param, Error &error);
diff --git a/src/db/SimpleDatabasePlugin.hxx b/src/db/SimpleDatabasePlugin.hxx
index 24e150a97..dfe981dd8 100644
--- a/src/db/SimpleDatabasePlugin.hxx
+++ b/src/db/SimpleDatabasePlugin.hxx
@@ -26,8 +26,6 @@
#include <cassert>
-#include <time.h>
-
struct Directory;
class SimpleDatabase : public Database {
@@ -55,11 +53,6 @@ public:
bool Save(Error &error);
- gcc_pure
- time_t GetLastModified() const {
- return mtime;
- }
-
static Database *Create(const config_param &param,
Error &error);
@@ -85,6 +78,10 @@ public:
DatabaseStats &stats,
Error &error) const override;
+ virtual time_t GetUpdateStamp() const override {
+ return mtime;
+ }
+
protected:
bool Configure(const config_param &param, Error &error);