Date | Commit message (Collapse) |
|
IO#trysendfile does not raise exceptions for common EAGAIN
errors, making it far less expensive to use with the following
concurrency models:
* Coolio
* CoolioFiberSpawn
* Revactor
* FiberSpawn
* FiberPool
This requires the new sendfile 1.1.0 RubyGem and removes support
for the sendfile 1.0.0. All sendfile users must upgrade or be
left without sendfile(2) support. IO#sendfile behaves the same
if you're using a multi-threaded concurrency option, but we
don't detect nor use it unless IO#trysendfile exists.
|
|
There's a lot of code duplication here :<
|
|
We should only attempt to modify the descriptor when we
block, and not for subsequent events.
|
|
We're living on the EDGE and mixing epoll with threads :D
|
|
We know @wr_queue is empty since we just initialized it
and the first thing an HTTP client does is read.
|
|
No need to setting an ivar for most requests
|
|
We'll override it, maybe...
|
|
We don't do Level-Triggered I/O around here
|
|
We'll lower our precision for keepalive timeouts a little
and and reduce our Time object allocation rate.
|
|
We don't need to allocate new string objects for short-lived
strings. We'll pay the price of a constant lookup instead.
|
|
We can eliminate the State module to simplify our code
since 1.3.x keeps better track of things.
|
|
Nothing we can do about that from clients. Perhaps kgio
should just return nil for those...
|
|
Coolio and EventMachine only use level-triggered epoll,
but being Rainbows!, we live on the EDGE!
|