diff options
Diffstat (limited to 'lib/rainbows.rb')
-rw-r--r-- | lib/rainbows.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/rainbows.rb b/lib/rainbows.rb index 0b6402a..d3a3e7d 100644 --- a/lib/rainbows.rb +++ b/lib/rainbows.rb @@ -34,6 +34,24 @@ module Rainbows class << self + # Sleeps the current application dispatch. This will pick the + # optimal method to sleep depending on the concurrency model chosen + # (which may still suck and block the entire process). Using this + # with the basic :Rev or :EventMachine models is not recommended. + # This should be used within your Rack application. + def sleep(nr) + case G.server.use + when :FiberPool, :FiberSpawn + Rainbows::Fiber.sleep(nr) + when :RevFiberSpawn + Rainbows::Fiber::Rev::Sleeper.new(nr) + when :Revactor + Actor.sleep(nr) + else + Kernel.sleep(nr) + end + end + # runs the Rainbows! HttpServer with +app+ and +options+ and does # not return until the server has exited. def run(app, options = {}) |