Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | fs/Traits: use value_type | Max Kellermann | 2014-10-10 | 1 | -4/+4 |
| | |||||
* | Main: run the OS X native event loop | nanotech | 2014-10-10 | 5 | -0/+52 |
| | |||||
* | storage/nfs: use the libnfs async API | Max Kellermann | 2014-10-09 | 4 | -49/+398 |
| | | | | Share the NFS connection with the NFS input plugin. | ||||
* | lib/nfs/Connection: reduce Error instance allocations | Max Kellermann | 2014-10-09 | 1 | -3/+2 |
| | |||||
* | lib/nfs/Glue: add assertion | Max Kellermann | 2014-10-09 | 1 | -0/+1 |
| | |||||
* | StoragePlugin: pass EventLoop to constructor | Max Kellermann | 2014-10-09 | 11 | -15/+31 |
| | |||||
* | test/run_input, ...: add struct ScopeIOThread | Max Kellermann | 2014-10-07 | 9 | -32/+57 |
| | | | | Auto-stop the IO thread in all error handlers. | ||||
* | storage/nfs: move code to class MemoryStorageDirectoryReader | Max Kellermann | 2014-10-07 | 4 | -73/+151 |
| | | | | | | Read all directory entries into memory and close the struct nfsdir before returning the StorageDirectoryReader instance. This is what libnfs does, anyway. | ||||
* | storage/nfs: move code to Copy() | Max Kellermann | 2014-10-07 | 1 | -18/+30 |
| | |||||
* | lib/nfs/Connection: add methods {Open,Read,Close}Directory() | Max Kellermann | 2014-10-07 | 2 | -0/+53 |
| | |||||
* | lib/nfs/Connection: add method Stat(path) | Max Kellermann | 2014-10-07 | 2 | -0/+33 |
| | |||||
* | test/run_storage: new debug program | Max Kellermann | 2014-10-07 | 2 | -2/+143 |
| | |||||
* | Makefile.am: add libnfs and libsmbclient to STORAGE_LIBS | Max Kellermann | 2014-10-07 | 1 | -1/+4 |
| | |||||
* | lib/nfs/Connection: make GetEventLoop() public | Max Kellermann | 2014-10-06 | 1 | -4/+4 |
| | |||||
* | lib/nfs/Base: kludge to reduce number of NFS mounts | Max Kellermann | 2014-10-05 | 5 | -7/+128 |
| | | | | | | | Creating a NfsStorage sets its own export_name as the "base". Now NfsFileReader can use this information to derive the export_name to be mounted, instead of guessing. This solves the "too many connection" problem on the NFS server while updating the database. | ||||
* | Makefile.am: compile libffmpeg.a with FFMPEG_CFLAGS | Max Kellermann | 2014-10-04 | 1 | -0/+2 |
| | |||||
* | PlaylistStream: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 1 | -5/+3 |
| | |||||
* | PlaylistStream: pass Path instance to playlist_open_path() | Max Kellermann | 2014-10-02 | 3 | -11/+19 |
| | | | | | Convert filesystem charset to UTF-8 for playlist_list_open_uri(). This fixes one of many remaining charset bugs. | ||||
* | archive/bzip2: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 1 | -2/+2 |
| | |||||
* | input/Open: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 5 | -33/+34 |
| | | | | | | | Make the "open" method of plugins "file" and "archive" dummy methods that always fail. Instead, let InputStream::Open() hard-code access to these two plugins by using OpenLocalInputStream(). This allows simplifyin the algorithm for falling back to probing archive plugins. | ||||
* | DecoderThread: use OpenLocalInputStream() for local files | Max Kellermann | 2014-10-02 | 1 | -1/+20 |
| | |||||
* | TagFile: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 1 | -3/+4 |
| | |||||
* | input/LocalOpen: new library for opening local files | Max Kellermann | 2014-10-02 | 3 | -0/+87 |
| | | | | Combines the "file" and the "archive" input plugins. | ||||
* | input/archive: export function OpenArchiveInputStream() | Max Kellermann | 2014-10-02 | 2 | -16/+33 |
| | |||||
* | input/file: export function OpenFileInputStream() | Max Kellermann | 2014-10-02 | 2 | -13/+37 |
| | |||||
* | input/file: generate Error when errno==ENOENT | Max Kellermann | 2014-10-02 | 1 | -1/+1 |
| | | | | | This special case was useless. Fixes the dreaded "Unrecognized URI" error message when a file does not exist. | ||||
* | input/file: make the "fd" attribute "const" | Max Kellermann | 2014-10-02 | 1 | -1/+1 |
| | |||||
* | input/file: make variables more local | Max Kellermann | 2014-10-02 | 1 | -6/+3 |
| | |||||
* | storage: remove redundant "virtual" keywords | Max Kellermann | 2014-10-02 | 5 | -38/+34 |
| | | | | "override" implies "virtual". | ||||
* | input/file: convert to class | Max Kellermann | 2014-10-02 | 1 | -1/+2 |
| | |||||
* | storage/Interface: include cleanup | Max Kellermann | 2014-10-01 | 7 | -2/+11 |
| | |||||
* | Makefile.am: fix header file names | Max Kellermann | 2014-10-01 | 1 | -4/+7 |
| | | | | Found by "make distcheck". | ||||
* | lib/nfs/FileReader: postpone the nfs_close_async() call | Max Kellermann | 2014-10-01 | 4 | -6/+92 |
| | | | | | | If an async opertion is in progress, nfs_close_async() will make libnfs crash because the RPC callback will dereference an object that was freed by nfs_close_async(). | ||||
* | lib/nfs/Connection: fix memory leak when cancelling Open() | Max Kellermann | 2014-10-01 | 2 | -5/+23 |
| | | | | Close the newly allocated file handle passed to the callback. | ||||
* | lib/nfs/Connection: remove Mutex | Max Kellermann | 2014-10-01 | 2 | -18/+12 |
| | | | | | All locks are currenly held from only a single thread (the IOThread) and thus we don't need the Mutex. | ||||
* | lib/nfs/Connection: add method GetEventLoop() | Max Kellermann | 2014-10-01 | 2 | -1/+5 |
| | |||||
* | lib/nfs/Connection: remove obsolete flag postponed_destroy | Max Kellermann | 2014-10-01 | 2 | -18/+2 |
| | |||||
* | lib/nfs/Connection: remove deprecated move constructor workaround | Max Kellermann | 2014-10-01 | 1 | -16/+0 |
| | | | | | Not used anymore because NfsManager now uses boost::intrusive::set instead of std::map. | ||||
* | storage/nfs: make a few attributes "const" | Max Kellermann | 2014-10-01 | 1 | -3/+3 |
| | |||||
* | lib/nfs/Manager: use boost::intrusive::map | Max Kellermann | 2014-10-01 | 2 | -37/+78 |
| | | | | | Reduce overhead for storing the key twice, and more overhead while looking up the connection to remove it after a failure. | ||||
* | lib/nfs/Glue: add assertion | Max Kellermann | 2014-10-01 | 1 | -0/+4 |
| | |||||
* | lib/nfs/Glue: destruct the NfsManager in the I/O thread | Max Kellermann | 2014-10-01 | 3 | -5/+8 |
| | | | | | This allows eliminating the indirection code from the NfsConnection destructor. | ||||
* | lib/nfs/Glue: eliminate class NfsGlue | Max Kellermann | 2014-10-01 | 1 | -17/+1 |
| | | | | It's just a useless wrapper for class NfsManager. | ||||
* | lib/nfs/Cancellable: use boost::intrusive::list | Max Kellermann | 2014-10-01 | 3 | -40/+18 |
| | | | | | Reduce Remove() overhead because we don't have to walk the list to find an iterator by reference. | ||||
* | Tag: support "AlbumSort" | Max Kellermann | 2014-09-29 | 4 | -1/+6 |
| | | | | | The new tag is supported by all decoders that use the tag name table, and the ID3v2 tag "TSOA" maps to it. | ||||
* | storage/nfs: convert file name to UTF-8 | Max Kellermann | 2014-09-28 | 1 | -8/+30 |
| | | | | | Assume the configured filesystem character set is also used by the NFS server. | ||||
* | storage/nfs: use string::append() instead of string::insert() | Max Kellermann | 2014-09-28 | 1 | -3/+2 |
| | | | | | Swap the order of adding the URI and the slash, because appending is cheaper than inserting. | ||||
* | storage/nfs: move code to UriToNfsPath() | Max Kellermann | 2014-09-28 | 1 | -6/+13 |
| | |||||
* | fs/AllocatedPath: add method Steal() | Max Kellermann | 2014-09-28 | 1 | -0/+8 |
| | |||||
* | fs/AllocatedPath: API documentation grammar fixes | Max Kellermann | 2014-09-28 | 1 | -5/+5 |
| |