DatabasePlugin: add FLAG_REQUIRE_STORAGE
Ignore the storage configuration if FLAG_REQUIRE_STORAGE is not set in the DatabasePlugin.
This commit is contained in:
parent
9e36af7916
commit
150443b014
26
src/Main.cxx
26
src/Main.cxx
|
@ -67,6 +67,7 @@
|
|||
#ifdef ENABLE_DATABASE
|
||||
#include "db/update/Service.hxx"
|
||||
#include "db/Configured.hxx"
|
||||
#include "db/DatabasePlugin.hxx"
|
||||
#include "db/plugins/SimpleDatabasePlugin.hxx"
|
||||
#include "storage/Configured.hxx"
|
||||
#include "storage/CompositeStorage.hxx"
|
||||
|
@ -177,16 +178,23 @@ glue_db_init_and_load(void)
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!InitStorage(error))
|
||||
FatalError(error);
|
||||
if (instance->database->GetPlugin().flags & DatabasePlugin::FLAG_REQUIRE_STORAGE) {
|
||||
if (!InitStorage(error))
|
||||
FatalError(error);
|
||||
|
||||
if (instance->storage == nullptr) {
|
||||
delete instance->database;
|
||||
instance->database = nullptr;
|
||||
LogDefault(config_domain,
|
||||
"Found database setting without "
|
||||
"music_directory - disabling database");
|
||||
return true;
|
||||
if (instance->storage == nullptr) {
|
||||
delete instance->database;
|
||||
instance->database = nullptr;
|
||||
LogDefault(config_domain,
|
||||
"Found database setting without "
|
||||
"music_directory - disabling database");
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (IsStorageConfigured())
|
||||
LogDefault(config_domain,
|
||||
"Ignoring the storage configuration "
|
||||
"because the database does not need it");
|
||||
}
|
||||
|
||||
if (!instance->database->Open(error))
|
||||
|
|
|
@ -33,6 +33,12 @@ class DatabaseListener;
|
|||
class Database;
|
||||
|
||||
struct DatabasePlugin {
|
||||
/**
|
||||
* This plugin requires a #Storage instance. It contains only
|
||||
* cached metadata from files in the #Storage.
|
||||
*/
|
||||
static constexpr unsigned FLAG_REQUIRE_STORAGE = 0x1;
|
||||
|
||||
const char *name;
|
||||
|
||||
unsigned flags;
|
||||
|
@ -43,6 +49,10 @@ struct DatabasePlugin {
|
|||
Database *(*create)(EventLoop &loop, DatabaseListener &listener,
|
||||
const config_param ¶m,
|
||||
Error &error);
|
||||
|
||||
constexpr bool RequireStorage() const {
|
||||
return flags & FLAG_REQUIRE_STORAGE;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -780,6 +780,6 @@ ProxyDatabase::GetStats(const DatabaseSelection &selection,
|
|||
|
||||
const DatabasePlugin proxy_db_plugin = {
|
||||
"proxy",
|
||||
0,
|
||||
DatabasePlugin::FLAG_REQUIRE_STORAGE,
|
||||
ProxyDatabase::Create,
|
||||
};
|
||||
|
|
|
@ -337,6 +337,6 @@ SimpleDatabase::Save(Error &error)
|
|||
|
||||
const DatabasePlugin simple_db_plugin = {
|
||||
"simple",
|
||||
0,
|
||||
DatabasePlugin::FLAG_REQUIRE_STORAGE,
|
||||
SimpleDatabase::Create,
|
||||
};
|
||||
|
|
|
@ -76,3 +76,9 @@ CreateConfiguredStorage(Error &error)
|
|||
|
||||
return CreateConfiguredStorageLocal(error);
|
||||
}
|
||||
|
||||
bool
|
||||
IsStorageConfigured()
|
||||
{
|
||||
return config_get_string(CONF_MUSIC_DIR, nullptr) != nullptr;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#define MPD_STORAGE_CONFIG_HXX
|
||||
|
||||
#include "check.h"
|
||||
#include "Compiler.h"
|
||||
|
||||
class Error;
|
||||
class Storage;
|
||||
|
@ -33,4 +34,11 @@ class Storage;
|
|||
Storage *
|
||||
CreateConfiguredStorage(Error &error);
|
||||
|
||||
/**
|
||||
* Returns true if there is configuration for a #Storage instance.
|
||||
*/
|
||||
gcc_const
|
||||
bool
|
||||
IsStorageConfigured();
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue