Max Kellermann
f578a1cb2b
storage/Interface: add virtual method OpenFile()
...
This should replace most InputStream::Open() calls because it is a
chance to reuse existing resources (e.g. the NFS connection). No such
optimization is implemented, currently (and the method is not yet used
by anybody).
2024-05-17 12:54:08 +02:00
Max Kellermann
2576e66a55
input/nfs: cancel the pending read operation on seek
2024-05-17 12:54:08 +02:00
Max Kellermann
58e3b830e9
lib/nfs/FileReader: clear the read_buffer in CancelRead()
...
Fixes assertion failure with libnfs 6.
2024-05-17 12:53:35 +02:00
Max Kellermann
1d35031024
lib/nfs/Connection: merge CancelAndClose() into Cancel()
2024-05-17 12:53:30 +02:00
Max Kellermann
96b61755da
lib/nfs/FileReader: fix doc typo
2024-05-15 21:31:30 +02:00
Max Kellermann
9f174c56ce
playlist/Mapper: postpone the stored playlist error
...
Fixes another regression by commit
f53cd44c7a
- an exception thrown by
playlist_open_in_playlist_dir() would skip over
playlist_open_in_storage().
2024-05-15 21:08:46 +02:00
Max Kellermann
c8be9662bb
playlist/Print: add missing exception handler
...
This went missing in commit f53cd44c7a
2024-05-15 20:53:55 +02:00
Max Kellermann
f53cd44c7a
playlist/{Stream,Mapper,Any}: propagate exceptions, do not catch&log them
...
Let the caller handle all the exceptions.
2024-05-15 20:19:57 +02:00
Max Kellermann
9303764a83
playlist/Print: throw PlaylistError::NoSuchList instead of returning false
2024-05-15 20:19:09 +02:00
Max Kellermann
a5456a89dc
playlist/Length: throw PlaylistError::NoSuchList instead of returning false
2024-05-15 20:15:16 +02:00
Max Kellermann
c974fc664c
playlist/Plugin: add `noexcept`
2024-05-15 20:02:12 +02:00
Max Kellermann
eceead671e
playlist/Stream: add API documentation
2024-05-15 19:59:57 +02:00
Max Kellermann
4e7b554605
TagAny, playlist/Mapper: use `if` with initializer
2024-05-15 15:02:59 +02:00
Max Kellermann
a701da6386
db/update/InotifyUpdate: use OpenLocalInputStream()
2024-05-15 14:48:32 +02:00
Max Kellermann
1f47fe47c7
input/Open: move code to WaitReady()
2024-05-15 14:39:40 +02:00
Max Kellermann
5dd07ac040
test/run_storage: use the OptionParser class for command-line options
...
Introducing the option "--verbose".
2024-05-15 14:11:25 +02:00
Max Kellermann
ca8a2aeb7b
test/run_storage: print a combined usage text for all commands
2024-05-15 11:17:30 +02:00
Max Kellermann
57fad1d4b2
test/run_storage: move initialization to class GlobalInit
2024-05-15 10:15:12 +02:00
Max Kellermann
5c2720a931
.github/workflows/build.yml: drop MINGW32 build
...
The MINGW32 build has been failing for a while because the MSYS2
repository has dropped MINGW32 versions of various packages in commit
6866be94df
I suppose nobody really uses 32 bit anymore. I'd like to have a 32
bit test of MPD, just to verify code correctness, but on the other
hand, I don't like solving problems like this MSYS2 packaging problem.
2024-05-15 06:20:57 +02:00
Max Kellermann
31e583e9f8
lib/nfs: initial support for libnfs API 2
...
Commit
5e8f7ce273
introduced the libnfs API version 2 which may eventually become libnfs
version 6.
This version detection depends on my pull request
https://github.com/sahlberg/libnfs/pull/468
2024-05-15 06:01:42 +02:00
Max Kellermann
0ac24e5a24
lib/nfs/FileReader: move code to ReadCallback()
2024-05-15 06:00:37 +02:00
Max Kellermann
98f53b6d3d
lib/nfs/Connection: add DisposablePointer parameter to CancelAndClose()
...
Just in case somebody needs to free a buffer after the NFS
cancellation has completed.
2024-05-15 06:00:35 +02:00
Max Kellermann
f5092cb73d
util/DisposablePointer: new class
2024-05-15 05:58:23 +02:00
Max Kellermann
48d3bd1cca
lib/nfs/Connection: add API documentation
2024-05-14 19:57:50 +02:00
Max Kellermann
5cffd4f673
lib/nfs/Connection: remove EnableCloseOnExec() call
...
SOCK_CLOEXEC has been added to libnfs version 2, and since we require
at least version 4, we can safely remove this call.
2024-05-14 19:51:52 +02:00
Max Kellermann
416f65fe01
util/RoundPowerOfTwo: new library
2024-05-13 20:25:57 +02:00
Max Kellermann
64c291ba78
lib/nfs/Connection: suppress bogus clang warning
...
We do need to capture "this" because we use "this->active_leases", but
clang 18 is too dumb to understand this.
2024-05-13 18:30:05 +02:00
Max Kellermann
dcde2a0bae
lib/nfs/Connection: fix -Wunused-lambda-capture
2024-05-13 18:27:38 +02:00
Max Kellermann
f0ac0c19b7
lib/nfs/Connection: remove obsolete debug field "in_destroy"
...
This is obsolete because PrepareDestroyContext() no longer calls
nfs_destroy_context().
2024-05-13 16:53:18 +02:00
Max Kellermann
ba1b8533a5
lib/nfs/Connection: fix assertion failure on mount timeout
...
When nfs_destroy_context() is called while nfs_mount_async() is in
progress, libnfs invokes MountCallback(-EINTR) (but only if a NFS RPC
call is in progress; if the TCP connect is in progress, that callback
is not invoked).
If the mount operation had timed out, OnMountTimeout() set
mount_state=FINISHED, which triggered an assertion failure in
MountCallback(); this commit adds a check on whether the mount has
timed out and ignores the MountCallback.
2024-05-13 16:51:44 +02:00
Max Kellermann
84e8927b1b
lib/nfs/FileReader: remove obsolete stat64 cast
...
Obsoleted (and broken) by commit 9947d3e67f
2024-05-13 12:33:03 +02:00
Max Kellermann
556300d59a
input/InputStream: add [[nodiscard]]
2024-05-13 12:29:16 +02:00
Max Kellermann
34f7b38f39
input/InputStream: pass std::span<std::byte> to Read()
2024-05-13 12:28:40 +02:00
Max Kellermann
f28d10d934
decoder/dsdiff: convert pointers to references
2024-05-13 11:34:05 +02:00
Max Kellermann
d6adc59265
test/run_storage: use FormatISO8601()
2024-05-13 10:37:33 +02:00
Max Kellermann
c154dc00d7
test/run_storage: use StringIsEqual()
2024-05-13 10:37:25 +02:00
Max Kellermann
6d5dab38dd
input/async: pass std::string_view to constructor
2024-05-13 10:18:18 +02:00
jcorporation
480f4d4cf1
Fix filename list for albumart
2024-05-12 22:17:13 +02:00
jcorporation
f8271fec12
command_available return stickernames only if stickerdb is enabled
2024-05-12 21:23:29 +02:00
Max Kellermann
4800f1d8f2
storage/Interface: add [[nodiscard]]
2024-05-10 19:08:57 +02:00
Max Kellermann
48ce8e9fb7
subprojects: update sqlite3 to 3450300
2024-05-10 18:18:04 +02:00
Max Kellermann
f746e5b7d7
subprojects: update liburing to 2.5
2024-05-10 18:17:52 +02:00
Max Kellermann
cdce257512
subprojects: update libnpupnp to 6.1.2
2024-05-10 18:17:42 +02:00
Max Kellermann
227ab998bc
lib/nfs/Connection: pass status and data to the NfsClientError ctor
...
This way, we avoid calling the FormatNfsClientError() which crashes
when nfs_get_error() returns nullptr; that can happen on RPC errors:
then, libnfs's check_nfs4_error() doesn't call nfs_set_error().
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2040
2024-05-10 16:36:29 +02:00
Max Kellermann
9384bff6f9
lib/nfs/Manager: add method MakeConnection()
...
This uses the libnfs function nfs_parse_url_dir() which means MPD
gains support for the libnfs arguments like "version".
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2039
2024-05-07 21:22:43 +02:00
Max Kellermann
9947d3e67f
lib/nfs/Connection: use nfs_fstat64_async()
...
This is 64-bit-safe and anyway, nfs_fstat_async() doesn't work with
NFSv4.
2024-05-07 21:22:40 +02:00
Max Kellermann
67f01fbdb6
db/plugins/simple/Song: pass StorageFileInfo to UpdateFile()
...
Eliminates a redundant GetInfo() call.
2024-05-07 21:22:39 +02:00
Max Kellermann
164b5b0cf3
db/Song, SongUpdate: remove unnecessary c_str() calls
...
Just case implicitly to std::string_view, which is both simpler and
safer.
2024-05-07 21:13:38 +02:00
Max Kellermann
56bb1dddd7
lib/nfs/Connection: simplify error handling in OnSocketReady()
2024-05-06 18:35:58 +02:00
Max Kellermann
e6b1cf540b
lib/nfs/Connection: remove unnecessary initializers from MountInternal()
2024-05-06 18:24:36 +02:00