Max Kellermann
74976d3199
event: make FineTimerEvent optional
...
Several applications don't need it, so let's eliminate the code from
the executable.
2023-01-22 12:21:46 +01:00
Max Kellermann
a750e4afa7
event/Loop: move code to GetEarlierTimeout()
2023-01-22 12:19:07 +01:00
Max Kellermann
fa58db798b
lib/fmt/RuntimeError: new library
...
Replacing FormatRuntimeError().
2022-11-29 14:10:34 +01:00
Max Kellermann
66029c405f
system/FmtError: move to lib/fmt/
2022-11-28 23:09:27 +01:00
Max Kellermann
96ae659fdf
system/FmtError: new library
...
Replaces the Format*() functions in system/Error.hxx.
2022-11-28 21:56:12 +01:00
Max Kellermann
a3b32819b1
event/Loop: split InjectBreak() from Break()
2022-11-22 22:30:12 +01:00
Max Kellermann
a57cf443ed
event/Loop: set "again" in AddDefer() only if HAVE_THREADED_EVENT_LOOP
...
Only AddDefer()/AddIdle() calls from within DeferEvents are relevant.
2022-11-22 21:40:52 +01:00
Max Kellermann
51769c40d8
util/IntrusiveSortedList: new class
2022-11-13 09:08:36 +01:00
Max Kellermann
fb5d77158a
util/IntrusiveList: add enum LinkMode
...
Compile-time code simplification.
2022-11-13 08:15:47 +01:00
gd
440c676be2
EventLoop: added assert(IsInside()) in Insert(CoarseTimerEvent &) and AddIdle(DeferEvent &)
...
Like AddDefer(DeferEvent &), Insert(FineTimerEvent &), these methods don't lock to update EventLoop::again
2022-11-10 15:35:14 +01:00
Max Kellermann
b3c5e6a3cc
event/Loop: use IntrusiveList instead of boost::intrusive::list
2022-11-10 11:57:57 +01:00
Max Kellermann
ac7bf12743
event/Loop: move call to FlushClockCaches()
2022-09-28 10:03:39 +02:00
Max Kellermann
db21e20c99
event/Loop: improve API doc wording
2022-09-28 09:55:35 +02:00
Max Kellermann
56adb27b44
event/Loop: push new idle events to the back of the list
2022-09-28 09:47:36 +02:00
Max Kellermann
520e96b6e8
event/Loop: rename parameter
2022-09-28 09:45:58 +02:00
Max Kellermann
cc0def15c4
Copyright year 2022
2022-07-14 17:59:35 +02:00
Max Kellermann
59186f1fb0
event/Loop: include cleanup
2022-07-04 09:55:48 +02:00
Max Kellermann
5e68531428
event/SocketEvent: move ssize_t to class BufferedSocket
2022-07-04 09:54:08 +02:00
Max Kellermann
0f4bf5569a
event/InotifyEvent: new class wrapping inotify
...
Replaces class InotifySource.
2022-06-30 12:05:50 +02:00
Max Kellermann
bc3415ce8b
Copyright year 2022
2022-06-30 09:41:53 +02:00
Max Kellermann
cca20fec07
event/FineTimerEvent: adjust "friend" declaration
2022-06-29 17:29:44 +02:00
Max Kellermann
5348a446a7
util/IntrusiveList: move various static functions to struct IntrusiveListBaseHook
2022-06-29 17:27:40 +02:00
Max Kellermann
bb7be9a4cd
util/*FifoBuffer: migrate from WritableBuffer to std::span
2022-05-19 14:01:57 +02:00
Max Kellermann
219c416a1e
event/ServerSocket: rename ip_tos to dscp_class and support IPv6
2022-01-11 20:31:52 +01:00
Max Kellermann
1ae6378d85
event/ServerSocket: add ip_tos setting
2022-01-10 22:59:50 +01:00
Max Kellermann
0b6055954d
thread/AsyncWaiter: new class
...
Merges some redundant code.
2021-12-08 19:26:57 +01:00
Rosen Penev
9bcd425a85
array conversions
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-23 01:38:10 -08:00
Max Kellermann
f74996c02f
Merge remote-tracking branches 'neheb/1', 'neheb/2', 'neheb/3', 'neheb/4' and 'neheb/5'
2021-11-20 07:55:24 +01:00
Rosen Penev
5deca66fdc
add various nodiscard
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:17:26 -08:00
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
14b3c0f0af
event/Loop: destruct the Uring::Manager in the destructor before assert()
...
Fixes assertion failure when the EventLoop gets destructed before
Run() was ever called.
Fixes https://bugs.debian.org/998310
2021-11-03 18:32:14 +01:00
Max Kellermann
f31920e092
event/Loop: add thread assert() to AddDefer()
...
Currently fails in class NfsFileReader due to
https://github.com/MusicPlayerDaemon/MPD/issues/1298
2021-10-20 09:26:27 +02:00
Max Kellermann
070c03dbf7
event/Thread, ...: fix printf->libfmt remains
2021-10-19 13:19:07 +02:00
Max Kellermann
72f6e018e7
Log: remove the obsolete printf-style functions
2021-10-13 17:41:19 +02:00
Max Kellermann
4dae8b41da
event/PipeEvent: new class wrapping SocketEvent
2021-10-13 10:45:55 +02:00
Max Kellermann
937423dbcf
event/Loop: check the quit
flag after RunDeferred()
...
Allow DeferredEvents to call EventLoop::Break().
2021-09-10 12:14:18 +02:00
Max Kellermann
6f539cfcd6
Partition, ...: use libfmt for logging
2021-06-24 21:40:11 +02:00
Max Kellermann
d4bbb8c851
Merge branch 'struc' of git://github.com/neheb/MPD
2021-03-04 17:50:53 +01:00
Max Kellermann
f5f296b13a
event/TimerWheel: add a "ready" list as a special case
...
This reduces delays of zero-duration timers from up to 1 second to
zero. libavahi-client schedules zero-duration timers often.
2021-03-02 17:14:33 +01:00
Max Kellermann
1ac16516a1
event/TimerList: add option to avoid the Boost dependency
2021-02-22 23:35:16 +01:00
Max Kellermann
664674913e
event/Loop: include cleanup
2021-02-22 23:32:39 +01:00
Max Kellermann
0924b63e10
event/TimerWheel: add empty
flag to optimize a common case
2021-02-17 19:52:45 +01:00
Max Kellermann
ad03c70753
event/TimerWheel: workaround for GCC9 bug
2021-02-12 18:29:02 +01:00
Max Kellermann
5a16e3ffa3
event/TimerWheel: optimized container for CoarseTimerEvent
2021-02-05 18:24:25 +01:00
Max Kellermann
d1957b83c8
event/Chrono: add type alias TimePoint
2021-02-05 18:19:23 +01:00
Max Kellermann
1b4fd74575
event/TimerEvent: rename to FineTimerEvent
...
... and make TimerEvent a type alias for FineTimerEvent (i.e. swap
names).
2021-02-05 18:18:05 +01:00
Max Kellermann
def962b6cb
event/{Coarse,Fine,Far}TimerEvent: aliases for TimerEvent
...
Preparing for a variant of TimerEvent with coarse 1-second
granularity, but cheaper (with a timer wheel).
2021-02-05 18:16:05 +01:00
Max Kellermann
e802f1f61a
event/Loop: move TimerSet to separate class
2021-02-05 18:09:21 +01:00
Max Kellermann
271b287356
event/TimerEvent: assign due
in Schedule()
2021-02-05 17:57:05 +01:00
Max Kellermann
2a30acd99c
event/Loop: use [[gnu::pure]]
2021-02-05 17:55:33 +01:00