aboutsummaryrefslogtreecommitdiffstats
path: root/src/event (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | event/BlockingCall: always use DeferredMonitor internallyMax Kellermann2014-01-041-24/+0
| | | | | | | | | | There is no advantage of using EventLoop::AddCall(), now that DeferredMonitor is thread-safe.
* | event/DeferredMonitor: make fully thread-safeMax Kellermann2014-01-044-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-safeMax Kellermann2013-12-314-0/+15
| |
* | event/Loop: document that AddCall() is thread-safeMax Kellermann2013-12-311-0/+5
| |
* | event/PollGroupPoll: include stddef.h instead of string.hMax Kellermann2013-12-211-1/+2
| |
* | util/fifo_buffer: remove obsolete libraryMax Kellermann2013-12-191-1/+0
| |
* | util/PeakBuffer: use IsEmpty() instead of IsNull()Max Kellermann2013-12-191-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_bufferMax Kellermann2013-12-151-1/+0
| | | | | | | | Switch to the C++ version.
* | util/PeakBuffer: return ConstBuffer<void>Max Kellermann2013-12-151-4/+3
| |
* | configure.ac: add option "--disable-glib"Max Kellermann2013-12-151-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 Kellermann2013-12-041-22/+11
| | | | | | | | No GLib memory allocation.
* | PollGroupWinSelect: delete copy constructor and assignment operatorDenis Krjuchkov2013-12-031-0/+2
| |
* | PollGroupWinSelect: uninline constructor and destructorDenis Krjuchkov2013-12-032-2/+5
| |
* | event: add poll() based PollGroup implementationDenis Krjuchkov2013-12-023-0/+156
| |
* | PollGroupEPoll.hxx: add const modifiers where applicableDenis Krjuchkov2013-11-291-2/+2
| |
* | event: implement PollGroup based on Windows selectDenis Krjuchkov2013-11-294-0/+330
| |
* | event: introduce generic API for internal event loopDenis Krjuchkov2013-11-286-55/+147
| |
* | include cleanup using iwyuMax Kellermann2013-11-289-3/+11
| |
* | Add infrastructure for using multiple event loopsDenis Krjuchkov2013-11-2713-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 documentationMax Kellermann2013-11-245-1/+38
| |
* | event/SocketMonitor: add missing spaceMax Kellermann2013-11-242-4/+4
|/
* event/FullyBufferedSocket: remove obsolete TODO commentMax Kellermann2013-11-061-16/+0
| | | | We have a better solution now.
* event/FullyBufferedSocket: try to write without extra roundtripMax Kellermann2013-11-062-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() protectedMax Kellermann2013-11-062-4/+4
| | | | .. and rename it to Flush().
* event/SocketMonitor: add method Abandon()Max Kellermann2013-11-064-2/+32
|
* event/ServerSocket: don't abort if IPv6 is not availableMax Kellermann2013-11-041-1/+19
| | | | First check if an IPv6 socket can be created.
* event/ServerSocket: fix assertion failureMax Kellermann2013-11-041-1/+1
| | | | Regression from previous commit. D'oh!
* event/ServerSocket: open sockets in the order they were configuredMax Kellermann2013-11-042-5/+5
| | | | Use a std::list which can be appended at the end.
* *: use nullptr instead of NULLMax Kellermann2013-10-282-4/+4
|
* event/ServerSocket: pass AllocatedPath to AddPath()Max Kellermann2013-10-192-14/+18
|
* SignalMonitor: add SignalMonitorGetEventLoop()Max Kellermann2013-10-182-0/+15
| | | | Eliminate the global variable "shutdown_loop".
* event/BufferedSocket: pass writable pointer to OnSocketInput()Max Kellermann2013-10-151-1/+9
| | | | | Remove the const_cast from HttpdClient.cxx, and avoid one allocation in ClientRead.cxx.
* util/FifoBuffer: C++ version of the fifo_buffer libraryMax Kellermann2013-10-152-44/+21
|
* system/clock: convert to C++Max Kellermann2013-10-151-4/+4
|
* require GLib 2.28Max Kellermann2013-10-151-2/+0
| | | | The header glib_compat.h is now obsolete and can be removed.
* gcc.h: rename to Compiler.hMax Kellermann2013-10-158-8/+8
|
* Log: new logging library APIMax Kellermann2013-10-021-11/+12
| | | | | Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
* system/SocketError: un-inline constructorMax Kellermann2013-09-041-0/+2
| | | | Reduces header dependencies.
* util/Error: new error passing libraryMax Kellermann2013-09-045-54/+56
| | | | Replaces GLib's GError.
* system/resolver: convert to C++Max Kellermann2013-09-041-1/+1
|
* EventLoop: initialise the thread id explicitlyMax Kellermann2013-08-101-1/+2
|
* EventLoop: new implementation using epollMax Kellermann2013-08-1013-16/+705
| | | | Implement an event loop without GLib.
* event/Call: signal the calling threadMax Kellermann2013-08-101-0/+5
| | | | Fixes regression from commit 018f4155.
* event/IdleMonitor: new monitor classMax Kellermann2013-08-102-0/+130
|
* event/MultiSocketMonitor: add struct SingleFDMax Kellermann2013-08-102-8/+32
| | | | Prepare for migrating away from GLib.
* event/MultiSocketMonitor: use uint64_t instead of gint64Max Kellermann2013-08-102-5/+6
| | | | Unsigned and portable.
* event/MultiSocketMonitor: eliminate virtual method CheckSockets()Max Kellermann2013-08-102-8/+16
| | | | Handle timeout internally.
* event/MultiSocketMonitor: PrepareSockets() returns timeoutMax Kellermann2013-08-101-2/+5
| | | | Simplify the API, don't use GLib specific integer type.
* thread/Id: new class replacing GThread pointersMax Kellermann2013-08-102-8/+9
| | | | Remove a GLib dependencies from class EventLoop and DatabaseLock.
* event: add function BlockingCall()Max Kellermann2013-08-082-0/+108
| | | | | Replaces io_thread_call(). This approach is more generic and easier to use due to std::function.