Commit 0d8e44a0 authored by Max Kellermann's avatar Max Kellermann

db/DatabaseError: rename enum db_error and make strictly-typed

parent f097952b
......@@ -37,7 +37,8 @@ Database *
Instance::GetDatabase(Error &error)
{
if (database == nullptr)
error.Set(db_domain, DB_DISABLED, "No database");
error.Set(db_domain, int(DatabaseErrorCode::DISABLED),
"No database");
return database;
}
......
......@@ -129,12 +129,12 @@ ToAck(const Error &error)
return (enum ack)error.GetCode();
#ifdef ENABLE_DATABASE
} else if (error.IsDomain(db_domain)) {
switch ((enum db_error)error.GetCode()) {
case DB_DISABLED:
case DB_NOT_FOUND:
switch ((DatabaseErrorCode)error.GetCode()) {
case DatabaseErrorCode::DISABLED:
case DatabaseErrorCode::NOT_FOUND:
return ACK_ERROR_NO_EXIST;
case DB_CONFLICT:
case DatabaseErrorCode::CONFLICT:
return ACK_ERROR_ARG;
}
#endif
......
......@@ -22,16 +22,16 @@
class Domain;
enum db_error {
enum class DatabaseErrorCode {
/**
* The database is disabled, i.e. none is configured in this
* MPD instance.
*/
DB_DISABLED,
DISABLED,
DB_NOT_FOUND,
NOT_FOUND,
DB_CONFLICT,
CONFLICT,
};
extern const Domain db_domain;
......
......@@ -518,7 +518,8 @@ ProxyDatabase::GetSong(const char *uri, Error &error) const
}
if (song == nullptr) {
error.Format(db_domain, DB_NOT_FOUND, "No such song: %s", uri);
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No such song: %s", uri);
return nullptr;
}
......
......@@ -263,14 +263,14 @@ SimpleDatabase::GetSong(const char *uri, Error &error) const
if (r.uri == nullptr) {
/* it's a directory */
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No such song: %s", uri);
return nullptr;
}
if (strchr(r.uri, '/') != nullptr) {
/* refers to a URI "below" the actual song */
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No such song: %s", uri);
return nullptr;
}
......@@ -278,7 +278,7 @@ SimpleDatabase::GetSong(const char *uri, Error &error) const
const Song *song = r.directory->FindSong(r.uri);
protect.unlock();
if (song == nullptr) {
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No such song: %s", uri);
return nullptr;
}
......@@ -343,7 +343,8 @@ SimpleDatabase::Visit(const DatabaseSelection &selection,
}
}
error.Set(db_domain, DB_NOT_FOUND, "No such directory");
error.Set(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No such directory");
return false;
}
......@@ -426,13 +427,13 @@ SimpleDatabase::Mount(const char *uri, Database *db, Error &error)
auto r = root->LookupDirectory(uri);
if (r.uri == nullptr) {
error.Format(db_domain, DB_CONFLICT,
error.Format(db_domain, (int)DatabaseErrorCode::CONFLICT,
"Already exists: %s", uri);
return false;
}
if (strchr(r.uri, '/') != nullptr) {
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"Parent not found: %s", uri);
return false;
}
......@@ -459,7 +460,7 @@ SimpleDatabase::Mount(const char *local_uri, const char *storage_uri,
Error &error)
{
if (cache_path.IsNull()) {
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No 'cache_directory' configured");
return false;
}
......
......@@ -217,7 +217,8 @@ UpnpDatabase::GetSong(const char *uri, Error &error) const
{
auto vpath = stringToTokens(uri, "/", true);
if (vpath.size() < 2) {
error.Format(db_domain, DB_NOT_FOUND, "No such song: %s", uri);
error.Format(db_domain, (int)DatabaseErrorCode::NOT_FOUND,
"No such song: %s", uri);
return nullptr;
}
......@@ -495,7 +496,8 @@ UpnpDatabase::Namei(const ContentDirectoryService &server,
// Look for the name in the sub-container list
UPnPDirObject *child = dirbuf.FindObject(i->c_str());
if (child == nullptr) {
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain,
(int)DatabaseErrorCode::NOT_FOUND,
"No such object");
return false;
}
......@@ -506,7 +508,8 @@ UpnpDatabase::Namei(const ContentDirectoryService &server,
}
if (child->type != UPnPDirObject::Type::CONTAINER) {
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain,
(int)DatabaseErrorCode::NOT_FOUND,
"Not a container");
return false;
}
......@@ -604,7 +607,8 @@ UpnpDatabase::VisitServer(const ContentDirectoryService &server,
break;
default:
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain,
(int)DatabaseErrorCode::NOT_FOUND,
"Not found");
return false;
}
......@@ -617,7 +621,8 @@ UpnpDatabase::VisitServer(const ContentDirectoryService &server,
if (dirent.type != UPnPDirObject::Type::ITEM ||
dirent.item_class != UPnPDirObject::ItemClass::MUSIC) {
error.Format(db_domain, DB_NOT_FOUND,
error.Format(db_domain,
(int)DatabaseErrorCode::NOT_FOUND,
"Not found");
return false;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment