summary refs log tree commit homepage
path: root/lib/rainbows/writer_thread_pool
diff options
authorEric Wong <>2011-03-10 15:06:10 -0800
committerEric Wong <>2011-03-10 15:06:10 -0800
commitcd8a874d18fe01e11bb57b91186b6c9f712a4b3f (patch)
treea8400f2e6eeca1a4d4a686e138b97eb831eb9a8d /lib/rainbows/writer_thread_pool
parentafea5cd7c691de95b37d29728ab4880e3b737a42 (diff)
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.
Diffstat (limited to 'lib/rainbows/writer_thread_pool')
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/rainbows/writer_thread_pool/client.rb b/lib/rainbows/writer_thread_pool/client.rb
index 526a623..f02826e 100644
--- a/lib/rainbows/writer_thread_pool/client.rb
+++ b/lib/rainbows/writer_thread_pool/client.rb
@@ -18,7 +18,7 @@ class Rainbows::WriterThreadPool::Client <, :q)
-    if IO.respond_to?(:copy_stream) || IO.method_defined?(:sendfile_nonblock)
+    if IO.respond_to?(:copy_stream) || IO.method_defined?(:trysendfile)
       def write_response(status, headers, body, alive)
         if body.respond_to?(:close)
           write_response_close(status, headers, body, alive)