about summary refs log tree commit homepage
path: root/lib/rainbows/event_machine.rb
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-05-03 18:51:18 -0700
committerEric Wong <normalperson@yhbt.net>2010-05-03 18:51:18 -0700
commitdcf280239978e00435760470b5ddf67254312c75 (patch)
tree8f69d5ad19d3471506548035deaf7618ed1c353a /lib/rainbows/event_machine.rb
parent96f06e8171a4145feca8c750011cdd1d84a7b948 (diff)
downloadrainbows-dcf280239978e00435760470b5ddf67254312c75.tar.gz
Diffstat (limited to 'lib/rainbows/event_machine.rb')
-rw-r--r--lib/rainbows/event_machine.rb22
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/rainbows/event_machine.rb b/lib/rainbows/event_machine.rb
index aacdfb5..3dd329a 100644
--- a/lib/rainbows/event_machine.rb
+++ b/lib/rainbows/event_machine.rb
@@ -8,11 +8,14 @@ module Rainbows
   # Implements a basic single-threaded event model with
   # {EventMachine}[http://rubyeventmachine.com/].  It is capable of
   # handling thousands of simultaneous client connections, but with only
-  # a single-threaded app dispatch.  It is suited for slow clients and
-  # fast applications (applications that do not have slow network
-  # dependencies) or applications that use DevFdResponse for deferrable
-  # response bodies.  It does not require your Rack application to be
-  # thread-safe, reentrancy is only required for the DevFdResponse body
+  # a single-threaded app dispatch.  It is suited for slow clients,
+  # and can work with slow applications via asynchronous libraries such as
+  # {async_sinatra}[http://github.com/raggi/async_sinatra],
+  # {Cramp}[http://m.onkey.org/2010/1/7/introducing-cramp],
+  # and {rack-fiber_pool}[http://github.com/mperham/rack-fiber_pool].
+  #
+  # It does not require your Rack application to be thread-safe,
+  # reentrancy is only required for the DevFdResponse body
   # generator.
   #
   # Compatibility: Whatever \EventMachine ~> 0.12.10 and Unicorn both
@@ -22,6 +25,15 @@ module Rainbows
   # environment such as
   # {async_sinatra}[http://github.com/raggi/async_sinatra].
   #
+  # For a complete asynchronous framework,
+  # {Cramp}[http://m.onkey.org/2010/1/7/introducing-cramp] is fully
+  # supported when using this concurrency model.
+  #
+  # This model is fully-compatible with
+  # {rack-fiber_pool}[http://github.com/mperham/rack-fiber_pool]
+  # which allows each request to run inside its own \Fiber after
+  # all request processing is complete.
+  #
   # This model does not implement as streaming "rack.input" which allows
   # the Rack application to process data as it arrives.  This means
   # "rack.input" will be fully buffered in memory or to a temporary file