db/Interface: GetSong() throws exception on error

This commit is contained in:
Max Kellermann
2016-03-19 00:13:57 +01:00
parent 7ad7caa2ae
commit 2fd5182608
15 changed files with 43 additions and 67 deletions

View File

@@ -41,12 +41,10 @@ DatabaseDetachSong(const Storage &storage, const LightSong &song)
}
DetachedSong *
DatabaseDetachSong(const Database &db, const Storage &storage, const char *uri,
Error &error)
DatabaseDetachSong(const Database &db, const Storage &storage, const char *uri)
{
const LightSong *tmp = db.GetSong(uri, error);
if (tmp == nullptr)
return nullptr;
const LightSong *tmp = db.GetSong(uri);
assert(tmp != nullptr);
DetachedSong *song = new DetachedSong(DatabaseDetachSong(storage,
*tmp));

View File

@@ -26,7 +26,6 @@ struct LightSong;
class Database;
class Storage;
class DetachedSong;
class Error;
/**
* "Detach" the #Song object, i.e. convert it to a #DetachedSong
@@ -44,7 +43,7 @@ DatabaseDetachSong(const Storage &storage, const LightSong &song);
*/
gcc_malloc gcc_nonnull_all
DetachedSong *
DatabaseDetachSong(const Database &db, const Storage &storage, const char *uri,
Error &error);
DatabaseDetachSong(const Database &db, const Storage &storage,
const char *uri);
#endif

View File

@@ -73,8 +73,7 @@ public:
* @param uri_utf8 the URI of the song within the music
* directory (UTF-8)
*/
virtual const LightSong *GetSong(const char *uri_utf8,
Error &error) const = 0;
virtual const LightSong *GetSong(const char *uri_utf8) const = 0;
/**
* Mark the song object as "unused". Call this on objects

View File

@@ -115,8 +115,7 @@ public:
virtual void Open() override;
virtual void Close() override;
virtual const LightSong *GetSong(const char *uri_utf8,
Error &error) const override;
const LightSong *GetSong(const char *uri_utf8) const override;
void ReturnSong(const LightSong *song) const override;
virtual bool Visit(const DatabaseSelection &selection,
@@ -519,7 +518,7 @@ ProxyDatabase::OnIdle()
}
const LightSong *
ProxyDatabase::GetSong(const char *uri, gcc_unused Error &error) const
ProxyDatabase::GetSong(const char *uri) const
{
// TODO: eliminate the const_cast
const_cast<ProxyDatabase *>(this)->EnsureConnected();

View File

@@ -229,7 +229,7 @@ SimpleDatabase::Close()
}
const LightSong *
SimpleDatabase::GetSong(const char *uri, Error &error) const
SimpleDatabase::GetSong(const char *uri) const
{
assert(root != nullptr);
assert(prefixed_light_song == nullptr);
@@ -244,7 +244,7 @@ SimpleDatabase::GetSong(const char *uri, Error &error) const
protect.unlock();
const LightSong *song =
r.directory->mounted_database->GetSong(r.uri, error);
r.directory->mounted_database->GetSong(r.uri);
if (song == nullptr)
return nullptr;

View File

@@ -110,8 +110,7 @@ public:
virtual void Open() override;
virtual void Close() override;
const LightSong *GetSong(const char *uri_utf8,
Error &error) const override;
const LightSong *GetSong(const char *uri_utf8) const override;
void ReturnSong(const LightSong *song) const override;
virtual bool Visit(const DatabaseSelection &selection,

View File

@@ -82,8 +82,7 @@ public:
virtual void Open() override;
virtual void Close() override;
virtual const LightSong *GetSong(const char *uri_utf8,
Error &error) const override;
virtual const LightSong *GetSong(const char *uri_utf8) const override;
void ReturnSong(const LightSong *song) const override;
virtual bool Visit(const DatabaseSelection &selection,
@@ -202,7 +201,7 @@ UpnpDatabase::ReturnSong(const LightSong *_song) const
// Get song info by path. We can receive either the id path, or the titles
// one
const LightSong *
UpnpDatabase::GetSong(const char *uri, gcc_unused Error &error) const
UpnpDatabase::GetSong(const char *uri) const
{
auto vpath = stringToTokens(uri, "/", true);
if (vpath.size() < 2)