From 0d8e44a079d5c2e14adf43df42164b597b98f81a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 7 Feb 2016 01:01:10 +0100 Subject: [PATCH] db/DatabaseError: rename enum db_error and make strictly-typed --- src/Instance.cxx | 3 ++- src/command/CommandError.cxx | 8 ++++---- src/db/DatabaseError.hxx | 8 ++++---- src/db/plugins/ProxyDatabasePlugin.cxx | 3 ++- src/db/plugins/simple/SimpleDatabasePlugin.cxx | 15 ++++++++------- src/db/plugins/upnp/UpnpDatabasePlugin.cxx | 15 ++++++++++----- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/Instance.cxx b/src/Instance.cxx index 77059c26c..96a43c88a 100644 --- a/src/Instance.cxx +++ b/src/Instance.cxx @@ -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; } diff --git a/src/command/CommandError.cxx b/src/command/CommandError.cxx index dd7826366..6885028b7 100644 --- a/src/command/CommandError.cxx +++ b/src/command/CommandError.cxx @@ -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 diff --git a/src/db/DatabaseError.hxx b/src/db/DatabaseError.hxx index 542548c73..3604ce862 100644 --- a/src/db/DatabaseError.hxx +++ b/src/db/DatabaseError.hxx @@ -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; diff --git a/src/db/plugins/ProxyDatabasePlugin.cxx b/src/db/plugins/ProxyDatabasePlugin.cxx index 8beb2fb55..bb5754f77 100644 --- a/src/db/plugins/ProxyDatabasePlugin.cxx +++ b/src/db/plugins/ProxyDatabasePlugin.cxx @@ -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; } diff --git a/src/db/plugins/simple/SimpleDatabasePlugin.cxx b/src/db/plugins/simple/SimpleDatabasePlugin.cxx index ad266b0af..78f783f67 100644 --- a/src/db/plugins/simple/SimpleDatabasePlugin.cxx +++ b/src/db/plugins/simple/SimpleDatabasePlugin.cxx @@ -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; } diff --git a/src/db/plugins/upnp/UpnpDatabasePlugin.cxx b/src/db/plugins/upnp/UpnpDatabasePlugin.cxx index 26844a978..f69bfd08f 100644 --- a/src/db/plugins/upnp/UpnpDatabasePlugin.cxx +++ b/src/db/plugins/upnp/UpnpDatabasePlugin.cxx @@ -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; }