about summary refs log tree commit homepage
path: root/lib/rainbows/epoll/client.rb
DateCommit message (Collapse)
2011-03-10switch from IO#sendfile_nonblock to IO#trysendfile
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.
2011-02-05*epoll: consolidate re-run logic
There's a lot of code duplication here :<
2011-01-26epoll/client: avoid unnecessary Epoll#set calls
We should only attempt to modify the descriptor when we block, and not for subsequent events.
2011-01-24epoll/client: thread-safety for write queuing
We're living on the EDGE and mixing epoll with threads :D
2011-01-21epoll/client: minor optimization
We know @wr_queue is empty since we just initialized it and the first thing an HTTP client does is read.
2011-01-21ev_core: force input to be given to app_call
No need to setting an ivar for most requests
2011-01-21epoll/client: factor out on_close method
We'll override it, maybe...
2011-01-21epoll/client: remove unused client
We don't do Level-Triggered I/O around here
2011-01-21epoll: reduce expiration calls and Time objects
We'll lower our precision for keepalive timeouts a little and and reduce our Time object allocation rate.
2011-01-21ev_core: garbage reduction
We don't need to allocate new string objects for short-lived strings. We'll pay the price of a constant lookup instead.
2011-01-21epoll: use newer sleepy_penguin
We can eliminate the State module to simplify our code since 1.3.x keeps better track of things.
2011-01-20epoll: ignore ECONNRESET errors
Nothing we can do about that from clients. Perhaps kgio should just return nil for those...
2011-01-19initial edge-triggered epoll model
Coolio and EventMachine only use level-triggered epoll, but being Rainbows!, we live on the EDGE!