- 05 May, 2020 1 commit
-
-
Max Kellermann authored
This is the final piece of the series to establish io_uring support on Linux. MPD doesn't need io_uring for its efficient bulk I/O support, but to allow file I/O to be cancelled. This is a big problem on CIFS/NFS mounts where processes sleep uninterruptable if the file server disappears, deadlocking MPD. With io_uring, a flaky NFS connection allows MPD to continue to work (even though there are still deadlocks inside MPD which need to be addressed). This plugin does not yet use cancellable `open()` using `IORING_OP_OPENAT`. This will be implemented later. Lots of other optimization opportunities for io_uring are still missing as well - for example the database update could benefit a lot, but unfortunately, io_uring doesn't have `readdir()` support just yet.
-
- 12 Mar, 2020 1 commit
-
-
Rosen Penev authored
The former was deprecated with C++14. According to the C++11 and C++17 standards, both files are identical. Signed-off-by:
Rosen Penev <rosenp@gmail.com>
-
- 18 Jan, 2020 1 commit
-
-
Max Kellermann authored
-
- 17 Jun, 2019 1 commit
-
-
Max Kellermann authored
-
- 19 Nov, 2018 1 commit
-
-
Max Kellermann authored
Since we switched from autotools to Meson in commit 94592c14, we don't need to include `config.h` early to properly enable large file support. Meson passes the required macros on the compiler command line instead of defining them in `config.h`. This means we can include `config.h` at any time, whenever we want to check its macros, and there are no ordering constraints.
-
- 31 Oct, 2018 1 commit
-
-
Max Kellermann authored
-
- 22 Jun, 2018 1 commit
-
-
Max Kellermann authored
This adds a bit of overhead, but also adds flexibility to the API, because arbitrary triggers may be invoked from that virtual method implementation, not just Cond::signal(). The motivation for this is to make the handlers more dynamic, for the upcoming buffering class utilizing ProxyInputStream.
-
- 20 Jan, 2018 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
- 03 Jan, 2017 1 commit
-
-
Max Kellermann authored
-
- 09 Sep, 2016 1 commit
-
-
Max Kellermann authored
-
- 26 Feb, 2016 1 commit
-
-
Max Kellermann authored
-
- 21 Feb, 2016 1 commit
-
-
Max Kellermann authored
-
- 01 Jan, 2015 1 commit
-
-
Max Kellermann authored
-
- 02 Oct, 2014 2 commits
-
-
Max Kellermann authored
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.
-
Max Kellermann authored
Combines the "file" and the "archive" input plugins.
-
- 08 Feb, 2014 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
- 23 Jan, 2014 1 commit
-
-
Max Kellermann authored
-
- 13 Jan, 2014 1 commit
-
-
Max Kellermann authored
-
- 19 Oct, 2013 1 commit
-
-
Max Kellermann authored
-
- 04 Sep, 2013 1 commit
-
-
Max Kellermann authored
Replaces GLib's GError.
-
- 30 Jan, 2013 1 commit
-
-
Max Kellermann authored
-
- 29 Jan, 2013 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Add the interface ArchiveVisitor.
-
Max Kellermann authored
-
- 27 Jan, 2013 1 commit
-
-
Max Kellermann authored
-
- 24 Jan, 2013 1 commit
-
-
Max Kellermann authored
-
- 16 Sep, 2011 1 commit
-
-
Max Kellermann authored
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
-
- 29 Jan, 2011 1 commit
-
-
Max Kellermann authored
-
- 01 Jan, 2010 2 commits
-
-
Max Kellermann authored
Major API redesign: don't let the caller allocate the input_stream object. Let each input plugin allocate its own (derived/extended) input_stream pointer. The "data" attribute can now be removed, and all input plugins simply cast the input_stream pointer to their own structure (with an "struct input_stream base" as the first attribute).
-
Avuton Olrich authored
-
- 16 Dec, 2009 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Make archive_file a "real" struct, extended by all plugins. Add the plugin pointer to it. Wrap all method calls in functions.
-