config/Param: split block-specific attributes to new struct ConfigBlock

The old struct config_param remains only for top-level string options.
This commit is contained in:
Max Kellermann
2015-01-21 22:13:44 +01:00
parent 84e74173de
commit 4fa5538e2b
114 changed files with 871 additions and 732 deletions

View File

@@ -22,6 +22,7 @@
#include "DatabaseGlue.hxx"
#include "config/ConfigGlobal.hxx"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "config/ConfigError.hxx"
#include "fs/AllocatedPath.hxx"
#include "fs/StandardDirectory.hxx"
@@ -32,7 +33,7 @@ Database *
CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener,
Error &error)
{
const auto *param = config_get_param(ConfigOption::DATABASE);
const auto *param = config_get_block(ConfigBlockOption::DATABASE);
const auto *path = config_get_param(ConfigOption::DB_FILE);
if (param != nullptr && path != nullptr) {
@@ -42,10 +43,10 @@ CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener,
return nullptr;
}
struct config_param *allocated = nullptr;
ConfigBlock *allocated = nullptr;
if (param == nullptr && path != nullptr) {
allocated = new config_param("database", path->line);
allocated = new ConfigBlock(path->line);
allocated->AddBlockParam("path", path->value.c_str(),
path->line);
param = allocated;
@@ -60,7 +61,7 @@ CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener,
const auto db_file = AllocatedPath::Build(cache_dir, "mpd.db");
allocated = new config_param("database");
allocated = new ConfigBlock();
allocated->AddBlockParam("path", db_file.c_str(), -1);
param = allocated;
}

View File

@@ -22,17 +22,17 @@
#include "Registry.hxx"
#include "DatabaseError.hxx"
#include "util/Error.hxx"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "DatabasePlugin.hxx"
#include <string.h>
Database *
DatabaseGlobalInit(EventLoop &loop, DatabaseListener &listener,
const config_param &param, Error &error)
const ConfigBlock &block, Error &error)
{
const char *plugin_name =
param.GetBlockValue("plugin", "simple");
block.GetBlockValue("plugin", "simple");
const DatabasePlugin *plugin = GetDatabasePluginByName(plugin_name);
if (plugin == nullptr) {
@@ -41,5 +41,5 @@ DatabaseGlobalInit(EventLoop &loop, DatabaseListener &listener,
return nullptr;
}
return plugin->create(loop, listener, param, error);
return plugin->create(loop, listener, block, error);
}

View File

@@ -22,7 +22,7 @@
#include "Compiler.h"
struct config_param;
struct ConfigBlock;
class EventLoop;
class DatabaseListener;
class Database;
@@ -35,6 +35,6 @@ class Error;
*/
Database *
DatabaseGlobalInit(EventLoop &loop, DatabaseListener &listener,
const config_param &param, Error &error);
const ConfigBlock &block, Error &error);
#endif

View File

@@ -26,7 +26,7 @@
#ifndef MPD_DATABASE_PLUGIN_HXX
#define MPD_DATABASE_PLUGIN_HXX
struct config_param;
struct ConfigBlock;
class Error;
class EventLoop;
class DatabaseListener;
@@ -47,7 +47,7 @@ struct DatabasePlugin {
* Allocates and configures a database.
*/
Database *(*create)(EventLoop &loop, DatabaseListener &listener,
const config_param &param,
const ConfigBlock &block,
Error &error);
constexpr bool RequireStorage() const {

View File

@@ -30,7 +30,7 @@
#include "db/Stats.hxx"
#include "SongFilter.hxx"
#include "Compiler.h"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "tag/TagBuilder.hxx"
#include "tag/Tag.hxx"
#include "util/Error.hxx"
@@ -97,7 +97,7 @@ public:
listener(_listener) {}
static Database *Create(EventLoop &loop, DatabaseListener &listener,
const config_param &param,
const ConfigBlock &block,
Error &error);
virtual bool Open(Error &error) override;
@@ -129,7 +129,7 @@ public:
}
private:
bool Configure(const config_param &param, Error &error);
bool Configure(const ConfigBlock &block, Error &error);
bool Connect(Error &error);
bool CheckConnection(Error &error);
@@ -321,10 +321,10 @@ SendConstraints(mpd_connection *connection, const DatabaseSelection &selection)
Database *
ProxyDatabase::Create(EventLoop &loop, DatabaseListener &listener,
const config_param &param, Error &error)
const ConfigBlock &block, Error &error)
{
ProxyDatabase *db = new ProxyDatabase(loop, listener);
if (!db->Configure(param, error)) {
if (!db->Configure(block, error)) {
delete db;
db = nullptr;
}
@@ -333,11 +333,11 @@ ProxyDatabase::Create(EventLoop &loop, DatabaseListener &listener,
}
bool
ProxyDatabase::Configure(const config_param &param, gcc_unused Error &error)
ProxyDatabase::Configure(const ConfigBlock &block, gcc_unused Error &error)
{
host = param.GetBlockValue("host", "");
port = param.GetBlockValue("port", 0u);
keepalive = param.GetBlockValue("keepalive", false);
host = block.GetBlockValue("host", "");
port = block.GetBlockValue("port", 0u);
keepalive = block.GetBlockValue("keepalive", false);
return true;
}

View File

@@ -34,7 +34,7 @@
#include "fs/io/TextFile.hxx"
#include "fs/io/BufferedOutputStream.hxx"
#include "fs/io/FileOutputStream.hxx"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "fs/FileSystem.hxx"
#include "util/CharUtil.hxx"
#include "util/Error.hxx"
@@ -76,10 +76,10 @@ inline SimpleDatabase::SimpleDatabase(AllocatedPath &&_path,
Database *
SimpleDatabase::Create(gcc_unused EventLoop &loop,
gcc_unused DatabaseListener &listener,
const config_param &param, Error &error)
const ConfigBlock &block, Error &error)
{
SimpleDatabase *db = new SimpleDatabase();
if (!db->Configure(param, error)) {
if (!db->Configure(block, error)) {
delete db;
db = nullptr;
}
@@ -88,9 +88,9 @@ SimpleDatabase::Create(gcc_unused EventLoop &loop,
}
bool
SimpleDatabase::Configure(const config_param &param, Error &error)
SimpleDatabase::Configure(const ConfigBlock &block, Error &error)
{
path = param.GetBlockPath("path", error);
path = block.GetBlockPath("path", error);
if (path.IsNull()) {
if (!error.IsDefined())
error.Set(simple_db_domain,
@@ -100,12 +100,12 @@ SimpleDatabase::Configure(const config_param &param, Error &error)
path_utf8 = path.ToUTF8();
cache_path = param.GetBlockPath("cache_directory", error);
cache_path = block.GetBlockPath("cache_directory", error);
if (path.IsNull() && error.IsDefined())
return false;
#ifdef ENABLE_ZLIB
compress = param.GetBlockValue("compress", compress);
compress = block.GetBlockValue("compress", compress);
#endif
return true;

View File

@@ -28,7 +28,7 @@
#include <cassert>
struct config_param;
struct ConfigBlock;
struct Directory;
struct DatabasePlugin;
class EventLoop;
@@ -73,7 +73,7 @@ class SimpleDatabase : public Database {
public:
static Database *Create(EventLoop &loop, DatabaseListener &listener,
const config_param &param,
const ConfigBlock &block,
Error &error);
gcc_pure
@@ -134,7 +134,7 @@ public:
}
private:
bool Configure(const config_param &param, Error &error);
bool Configure(const ConfigBlock &block, Error &error);
gcc_pure
bool Check(Error &error) const;

View File

@@ -33,7 +33,7 @@
#include "db/LightDirectory.hxx"
#include "db/LightSong.hxx"
#include "db/Stats.hxx"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "tag/TagBuilder.hxx"
#include "tag/TagTable.hxx"
#include "util/Error.hxx"
@@ -78,7 +78,7 @@ public:
UpnpDatabase():Database(upnp_db_plugin) {}
static Database *Create(EventLoop &loop, DatabaseListener &listener,
const config_param &param,
const ConfigBlock &block,
Error &error);
virtual bool Open(Error &error) override;
@@ -106,7 +106,7 @@ public:
}
protected:
bool Configure(const config_param &param, Error &error);
bool Configure(const ConfigBlock &block, Error &error);
private:
bool VisitServer(const ContentDirectoryService &server,
@@ -158,10 +158,10 @@ private:
Database *
UpnpDatabase::Create(gcc_unused EventLoop &loop,
gcc_unused DatabaseListener &listener,
const config_param &param, Error &error)
const ConfigBlock &block, Error &error)
{
UpnpDatabase *db = new UpnpDatabase();
if (!db->Configure(param, error)) {
if (!db->Configure(block, error)) {
delete db;
return nullptr;
}
@@ -173,7 +173,7 @@ UpnpDatabase::Create(gcc_unused EventLoop &loop,
}
inline bool
UpnpDatabase::Configure(const config_param &, Error &)
UpnpDatabase::Configure(const ConfigBlock &, Error &)
{
return true;
}