db/Interface: GetSong() throws exception on error
This commit is contained in:
@@ -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));
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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();
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user