- 06 Jan, 2014 10 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Steven O'Brien authored
[mk: modified to use MultiSocketMonitor instead of SocketMonitor]
-
Max Kellermann authored
-
Max Kellermann authored
Users now have to call Close() explicitly. This simplifies using the class, as most users have automatic socket management already, and Steal() had to be used often.
-
Max Kellermann authored
-
Max Kellermann authored
Debug-mode workaround for bogus assertion failure.
-
Max Kellermann authored
-
- 05 Jan, 2014 11 commits
-
-
Max Kellermann authored
Add a flag that indicates whether the EventLoop is currently "busy". As long as that flag is set, it does not need to be woken up - we can simply add the DeferredMonitor to the list, and it will be caught by EventLoop very soon. This eliminates nearly all of the DeferredMonitor overhead when compared to IdleMonitor, rendering IdleMonitor mostly obsolete.
-
Max Kellermann authored
Reduce DeferredMonitor overhead.
-
Max Kellermann authored
Improved support for added events.
-
Max Kellermann authored
-
Max Kellermann authored
This call is not thread-safe.
-
Max Kellermann authored
-
Max Kellermann authored
Client::Close() installs a TimeoutMonitor, which is not something we should do during shutdown.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
For std::find_if().
-
Max Kellermann authored
Move code from AlsaMixerPlugin.
-
- 04 Jan, 2014 19 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Now that the remaining known bugs in poll() implementation are fixed, we can go on without the GLib implementation.
-
Max Kellermann authored
Fixes more thread-safety bugs.
-
Max Kellermann authored
-
Max Kellermann authored
Add a Page queue to class HttpdOutput, and use DeferredMonitor to flush this queue inside the IOThread. This fixes a thread-safety issue: much of EventLoop is not thread-safe, and the httpd plugin ignored that problem.
-
Max Kellermann authored
Do all I/O in the IOThread and not in the main thread. This solves an upcoming deadlock problem.
-
Max Kellermann authored
Don't let the server care for client problems.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Don't iterate the std::list each time.
-
Max Kellermann authored
Commit 1f119597 allowed modifying the "quit" attribute from any thread, and thus the assertion may fail spuriously. This assertion is too strict for the relaxed use of "quit". Let's remove it and move the "quit" check to before the SockedMonitor::Dispatch() call.
-
Max Kellermann authored
-
Max Kellermann authored
Simply set the "quit" flag and wake up the thread. This works even if we're inside this thread. Setting "quit" to a new value without mutex protection is usually not safe, but good enough here.
-
Max Kellermann authored
EventLoop::AddCall() and EventLoop::AddIdle() are unsafe, because we can't cancel those calls.
-
Max Kellermann authored
There is no advantage of using EventLoop::AddCall(), now that DeferredMonitor is thread-safe.
-
Max Kellermann authored
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().
-
James McGlashan (DarkFox) authored
-
James McGlashan (DarkFox) authored
-
James McGlashan (DarkFox) authored
-