aboutsummaryrefslogtreecommitdiffstats
path: root/src/db (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* db/SimpleDatabasePlugin: fix memory leak in Visit()Max Kellermann2012-09-051-7/+11
| | | | | | | When visiting a song, GetSong() was called, but this object was never returned by calling ReturnSong(). This patch locks the database only once in Visit() and passes the original song object to the visitor, avoiding the copy.
* db_lock: add C++ helper class ScopeDatabaseLockMax Kellermann2012-09-051-11/+6
|
* SongFilter: convert to a C++ classMax Kellermann2012-08-291-1/+1
|
* DatabaseSelection: add method Match()Max Kellermann2012-08-291-2/+1
|
* locate: rename to SongFilter.cxxMax Kellermann2012-08-291-1/+1
|
* ProxyDatabase: implement GetSong()Max Kellermann2012-08-161-3/+26
|
* ProxyDatabase: clear libmpdclient errors in CheckError()Max Kellermann2012-08-161-1/+2
| | | | Auto-recover from soft errors.
* DatabasePlugin: add method ReturnSong()Max Kellermann2012-08-163-0/+38
| | | | Allow the plugin to allocate the GetSong() return value.
* ProxyDatabase: pass "detached" objects to visitorsMax Kellermann2012-08-151-39/+34
| | | | Fixes wrong object URIs with duplicate base names.
* DatabasePlugin: add method GetStats()Max Kellermann2012-08-153-0/+37
| | | | | Optimize the ProxyDatabase by invoking "stats" on the peer, instead of visiting all songs.
* DatabasePlugin: add method VisitUniqueTags()Max Kellermann2012-08-153-0/+68
| | | | | Optimize the ProxyDatabase by invoking "list" on the peer, instead of visiting all songs.
* ProxyDatabase: obey visitor return valuesMax Kellermann2012-08-151-8/+11
|
* ProxyDatabasePlugin: add OO wrapper for mpd_entityMax Kellermann2012-08-151-11/+32
| | | | Let the C++ compiler take care for freeing the objects safely.
* ProxyDatabasePlugin: move tag table to the global name spaceMax Kellermann2012-08-151-25/+25
|
* db_visitor: delete obsolete headerMax Kellermann2012-08-152-4/+0
|
* ProxyDatabasePlugin: obey the "recursive" flagMax Kellermann2012-08-081-2/+3
|
* ProxyDatabasePlugin: use an artificial "root" directoryMax Kellermann2012-08-081-2/+9
| | | | Fixes assertion failures in the Directory library.
* ProxyDatabasePlugin: new database plugin using libmpdclientMax Kellermann2012-08-082-0/+372
| | | | | Implementation incomplete, but sort-of-works. DumpDatabase works, but MPD is still hard-coded on the "simple" plugin.
* DatabaseSelection: add "match" attributeMax Kellermann2012-08-081-2/+5
| | | | Let the database plugin do the match.
* db_selection: rename to DatabaseSelectionMax Kellermann2012-08-072-3/+3
|
* Database{Plugin,Visitor}: pass referencesMax Kellermann2012-08-072-8/+8
|
* DatabasePlugin: make Visit() constMax Kellermann2012-08-022-4/+4
|
* gcc.h: re-add gcc_const and gcc_pureMax Kellermann2012-08-021-5/+4
| | | | Remove GLib dependency from some headers.
* db_plugin: convert to C++Max Kellermann2012-08-013-184/+184
|
* require GLib 2.16Max Kellermann2012-07-101-1/+0
| | | | | GLib 2.16 was released more than 4 years ago. Let's remove some cruft from the glib_compat.h header, and avoid new cruft to it.
* directory: require the caller to lock the db_mutexMax Kellermann2012-02-021-2/+11
| | | | | Reduce the number of lock/unlock cycles, and make database handling safer.
* directory: replace dirvec with doubly linked listMax Kellermann2012-01-241-2/+6
| | | | | Random access is not needed, and a linked list is easier to manage: we don't need to (re-)allocate the pointer array.
* directory: simplify constructors and clarify API documentationMax Kellermann2012-01-241-2/+2
| | | | | Pass only the "name" to a directory, instead of the full (relative) path.
* db/simple: pass the correct GError pointerMax Kellermann2012-01-121-1/+1
|
* db_plugin: add method visit()Max Kellermann2011-09-131-0/+41
|
* db_plugin: add method get_song()Max Kellermann2011-09-131-0/+17
| | | | New db_get_song() implementation.
* db_plugin: introducing a plugin API for the song databaseMax Kellermann2011-09-102-0/+329
First draft, not really pluggable currently - hard-coded to use the "simple" plugin, and calls several of its internal functions. The API is very simple currently, all searches are still performed over the root "directory" object. Future changes to the API will move those search implementations into the plugin, to allow more efficient implementations, or implementations that don't have the whole tree in memory all the time.