Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | event/BlockingCall: always use DeferredMonitor internally | Max Kellermann | 2014-01-04 | 1 | -24/+0 | |
| | | | | | | | | | | There is no advantage of using EventLoop::AddCall(), now that DeferredMonitor is thread-safe. | |||||
* | | event/DeferredMonitor: make fully thread-safe | Max Kellermann | 2014-01-04 | 4 | -54/+77 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of creating a new eventfd for each DeferredMonitor instance, reuse EventLoop's eventfd, and add a std::list to EventLoop that manages the list of pending DeferredMonitors. This std::list is protected by the same mutex as the "calls" list. The bottom line is: reduced overhead because the per-instance eventfd was eliminated, slightly added overhead due to Mutex usage (but negligible), and we're thread-safe now. This subsystem is now good enough to replace EventLoop::AddCall(). | |||||
* | | event/*Monitor: document as not being thread-safe | Max Kellermann | 2013-12-31 | 4 | -0/+15 | |
| | | ||||||
* | | event/Loop: document that AddCall() is thread-safe | Max Kellermann | 2013-12-31 | 1 | -0/+5 | |
| | | ||||||
* | | event/PollGroupPoll: include stddef.h instead of string.h | Max Kellermann | 2013-12-21 | 1 | -1/+2 | |
| | | ||||||
* | | util/fifo_buffer: remove obsolete library | Max Kellermann | 2013-12-19 | 1 | -1/+0 | |
| | | ||||||
* | | util/PeakBuffer: use IsEmpty() instead of IsNull() | Max Kellermann | 2013-12-19 | 1 | -1/+1 | |
| | | | | | | | | | | | | The DynamicFifoBuffer methods never return nullptr when the buffer is empty or full; instead, they return an empty buffer. This bug caused an endless loop. | |||||
* | | util/PeakBuffer: use DynamicFifoBuffer instead of struct fifo_buffer | Max Kellermann | 2013-12-15 | 1 | -1/+0 | |
| | | | | | | | | Switch to the C++ version. | |||||
* | | util/PeakBuffer: return ConstBuffer<void> | Max Kellermann | 2013-12-15 | 1 | -4/+3 | |
| | | ||||||
* | | configure.ac: add option "--disable-glib" | Max Kellermann | 2013-12-15 | 1 | -0/+1 | |
| | | | | | | | | | | Allows building without GLib. This fails to compile currently, because GLib is still used in the MPD core. | |||||
* | | system/Resolver: sockaddr_to_string() returns std::string() | Max Kellermann | 2013-12-04 | 1 | -22/+11 | |
| | | | | | | | | No GLib memory allocation. | |||||
* | | PollGroupWinSelect: delete copy constructor and assignment operator | Denis Krjuchkov | 2013-12-03 | 1 | -0/+2 | |
| | | ||||||
* | | PollGroupWinSelect: uninline constructor and destructor | Denis Krjuchkov | 2013-12-03 | 2 | -2/+5 | |
| | | ||||||
* | | event: add poll() based PollGroup implementation | Denis Krjuchkov | 2013-12-02 | 3 | -0/+156 | |
| | | ||||||
* | | PollGroupEPoll.hxx: add const modifiers where applicable | Denis Krjuchkov | 2013-11-29 | 1 | -2/+2 | |
| | | ||||||
* | | event: implement PollGroup based on Windows select | Denis Krjuchkov | 2013-11-29 | 4 | -0/+330 | |
| | | ||||||
* | | event: introduce generic API for internal event loop | Denis Krjuchkov | 2013-11-28 | 6 | -55/+147 | |
| | | ||||||
* | | include cleanup using iwyu | Max Kellermann | 2013-11-28 | 9 | -3/+11 | |
| | | ||||||
* | | Add infrastructure for using multiple event loops | Denis Krjuchkov | 2013-11-27 | 13 | -113/+215 | |
| | | | | | | | | | | | | | | | | | | | | | | | | This change adds two configuration options: --with-eventloop=[glib|internal|auto] --with-pollmethod=[epoll|auto] First allows switching between GLib event loop and internal one. Second chooses backend to use for internal event loop. Conditional compilation symbols are changed accordingly. Additional helper macro MPD_OPTIONAL_FUNC_NODEF is added as well. | |||||
* | | event: add API documentation | Max Kellermann | 2013-11-24 | 5 | -1/+38 | |
| | | ||||||
* | | event/SocketMonitor: add missing space | Max Kellermann | 2013-11-24 | 2 | -4/+4 | |
|/ | ||||||
* | event/FullyBufferedSocket: remove obsolete TODO comment | Max Kellermann | 2013-11-06 | 1 | -16/+0 | |
| | | | | We have a better solution now. | |||||
* | event/FullyBufferedSocket: try to write without extra roundtrip | Max Kellermann | 2013-11-06 | 2 | -17/+33 | |
| | | | | | | Postpone the write using IdleMonitor instead of scheduling a write event. This reduces the number of system calls, because we don't need to register and unregister the write event in epoll. | |||||
* | event/FullyBufferedSocket: make WriteFromBuffer() protected | Max Kellermann | 2013-11-06 | 2 | -4/+4 | |
| | | | | .. and rename it to Flush(). | |||||
* | event/SocketMonitor: add method Abandon() | Max Kellermann | 2013-11-06 | 4 | -2/+32 | |
| | ||||||
* | event/ServerSocket: don't abort if IPv6 is not available | Max Kellermann | 2013-11-04 | 1 | -1/+19 | |
| | | | | First check if an IPv6 socket can be created. | |||||
* | event/ServerSocket: fix assertion failure | Max Kellermann | 2013-11-04 | 1 | -1/+1 | |
| | | | | Regression from previous commit. D'oh! | |||||
* | event/ServerSocket: open sockets in the order they were configured | Max Kellermann | 2013-11-04 | 2 | -5/+5 | |
| | | | | Use a std::list which can be appended at the end. | |||||
* | *: use nullptr instead of NULL | Max Kellermann | 2013-10-28 | 2 | -4/+4 | |
| | ||||||
* | event/ServerSocket: pass AllocatedPath to AddPath() | Max Kellermann | 2013-10-19 | 2 | -14/+18 | |
| | ||||||
* | SignalMonitor: add SignalMonitorGetEventLoop() | Max Kellermann | 2013-10-18 | 2 | -0/+15 | |
| | | | | Eliminate the global variable "shutdown_loop". | |||||
* | event/BufferedSocket: pass writable pointer to OnSocketInput() | Max Kellermann | 2013-10-15 | 1 | -1/+9 | |
| | | | | | Remove the const_cast from HttpdClient.cxx, and avoid one allocation in ClientRead.cxx. | |||||
* | util/FifoBuffer: C++ version of the fifo_buffer library | Max Kellermann | 2013-10-15 | 2 | -44/+21 | |
| | ||||||
* | system/clock: convert to C++ | Max Kellermann | 2013-10-15 | 1 | -4/+4 | |
| | ||||||
* | require GLib 2.28 | Max Kellermann | 2013-10-15 | 1 | -2/+0 | |
| | | | | The header glib_compat.h is now obsolete and can be removed. | |||||
* | gcc.h: rename to Compiler.h | Max Kellermann | 2013-10-15 | 8 | -8/+8 | |
| | ||||||
* | Log: new logging library API | Max Kellermann | 2013-10-02 | 1 | -11/+12 | |
| | | | | | Prepare to migrate away from GLib. Currently, we're still using GLib as a backend. | |||||
* | system/SocketError: un-inline constructor | Max Kellermann | 2013-09-04 | 1 | -0/+2 | |
| | | | | Reduces header dependencies. | |||||
* | util/Error: new error passing library | Max Kellermann | 2013-09-04 | 5 | -54/+56 | |
| | | | | Replaces GLib's GError. | |||||
* | system/resolver: convert to C++ | Max Kellermann | 2013-09-04 | 1 | -1/+1 | |
| | ||||||
* | EventLoop: initialise the thread id explicitly | Max Kellermann | 2013-08-10 | 1 | -1/+2 | |
| | ||||||
* | EventLoop: new implementation using epoll | Max Kellermann | 2013-08-10 | 13 | -16/+705 | |
| | | | | Implement an event loop without GLib. | |||||
* | event/Call: signal the calling thread | Max Kellermann | 2013-08-10 | 1 | -0/+5 | |
| | | | | Fixes regression from commit 018f4155. | |||||
* | event/IdleMonitor: new monitor class | Max Kellermann | 2013-08-10 | 2 | -0/+130 | |
| | ||||||
* | event/MultiSocketMonitor: add struct SingleFD | Max Kellermann | 2013-08-10 | 2 | -8/+32 | |
| | | | | Prepare for migrating away from GLib. | |||||
* | event/MultiSocketMonitor: use uint64_t instead of gint64 | Max Kellermann | 2013-08-10 | 2 | -5/+6 | |
| | | | | Unsigned and portable. | |||||
* | event/MultiSocketMonitor: eliminate virtual method CheckSockets() | Max Kellermann | 2013-08-10 | 2 | -8/+16 | |
| | | | | Handle timeout internally. | |||||
* | event/MultiSocketMonitor: PrepareSockets() returns timeout | Max Kellermann | 2013-08-10 | 1 | -2/+5 | |
| | | | | Simplify the API, don't use GLib specific integer type. | |||||
* | thread/Id: new class replacing GThread pointers | Max Kellermann | 2013-08-10 | 2 | -8/+9 | |
| | | | | Remove a GLib dependencies from class EventLoop and DatabaseLock. | |||||
* | event: add function BlockingCall() | Max Kellermann | 2013-08-08 | 2 | -0/+108 | |
| | | | | | Replaces io_thread_call(). This approach is more generic and easier to use due to std::function. |