Rosen Penev
4e0e4c00bf
treewide: replace lock_guard with scoped_lock
...
SonarLint reports the latter to be better:
std::scoped_lock basically provides the same feature as std::lock_guard,
but is more generic: It can lock several mutexes at the same time, with a
deadlock prevention mechanism (see {rule:cpp:S5524}). The equivalent code
to perform simultaneous locking with std::lock_guard is significantly more
complex. Therefore, it is simpler to use std::scoped_lock all the time,
even when locking only one mutex (there will be no performance impact).
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:13:03 -08:00
Max Kellermann
5348f8c9c8
copyright year 2021
2021-01-01 19:54:28 +01:00
Max Kellermann
2817bf9e95
copyright year 2020
2020-01-18 19:23:49 +01:00
Max Kellermann
d663f81420
include cleanups (powered by iwyu)
2019-07-05 09:59:58 +02:00
Max Kellermann
5d74b5cee1
input/cache: first draft of the file cache
2019-05-31 17:49:52 +02:00
Max Kellermann
971450f0d4
input/InputStream: make IsEOF() and IsAvailable() const
2019-05-29 13:31:54 +02:00
Max Kellermann
219546cb81
input/buffering: check error in IsAvailable()
2019-05-17 12:43:06 +02:00
Max Kellermann
555a4d738c
input/buffering: pass offset to Read() and eliminate Seek()
...
Another step towards supporting multiple readers.
2019-05-17 12:02:55 +02:00
Max Kellermann
813567bf5c
input/buffering: use notify_one() to wake up thread
...
There is just one thread.
2019-05-17 11:57:23 +02:00
Max Kellermann
16a07bc201
input/buffering: remove obsolete thread wakeup
...
The thread will always attempt to read more data since commit
2cf6b77627
, so we don't need to tell it
to continue.
2019-05-17 11:56:30 +02:00
Max Kellermann
1153715608
input/buffering: rename "read_error" to "error"
...
The "seek_error" attribute will be eliminated soon.
2019-05-17 11:29:19 +02:00
Max Kellermann
b5c7c16fb4
input/buffering: merge multiple exception handlers into RunThread()
2019-05-17 11:23:54 +02:00
Max Kellermann
302c0515b7
input/buffering: move code to RunThreadLocked()
2019-05-17 11:21:56 +02:00
Max Kellermann
19e4672a54
input/buffering: use notify_all() instead of notify_one()
...
More preparations to support multiple readers.
2019-05-17 11:17:16 +02:00
Max Kellermann
c2dd6808e1
input/buffering: make read errors fatal, no recovery
...
If a read error occurs, it is very unlikely that the InputStream will
ever recover. Removing the code removes some code complexity which
just isn't worth it. And it allows supporting multiple readers for
one buffer.
2019-05-17 10:55:58 +02:00
Max Kellermann
2cf6b77627
input/buffering: eliminate "idle" flag, automatically seek to next hole
2019-05-16 22:42:29 +02:00
Max Kellermann
a5c09f4ddb
input/buffering: destruct our input while mutex is unlocked
2019-05-16 22:38:37 +02:00
Max Kellermann
1acb9bcedb
input/buffering: close input if buffered completely
2019-05-16 22:34:11 +02:00
Max Kellermann
0626e3d21e
input/buffering: at end of input, seek to first hole
2019-05-16 22:29:10 +02:00
Max Kellermann
869d215058
input/buffering: merge "read_error" and "idle" checks in thread
2019-05-16 22:25:21 +02:00
Max Kellermann
0cf922b2da
input/buffering: clear read_error after successful seek
...
After seeking, a new read should be done.
2019-05-16 22:24:57 +02:00
Max Kellermann
5e266cd8e4
Merge branch 'v0.21.x'
2019-05-16 22:12:48 +02:00
Max Kellermann
a199f58db5
input/buffering: update thread name
2019-05-16 22:02:51 +02:00
Max Kellermann
5277297336
input/buffered: move basic buffering code to class BufferingInputStream
...
Prepare to reuse it in another class.
2019-05-16 21:41:28 +02:00