about summary refs log tree commit homepage
path: root/lib/rainbows/fiber_spawn.rb
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-10-22 02:51:18 +0000
committerEric Wong <normalperson@yhbt.net>2010-10-22 18:37:45 +0000
commit6d46978bdc8d2ee4263431ecdcada53389b12597 (patch)
tree29e1fb6ce60d84c3b3cf587e3faf4412b9a59a3c /lib/rainbows/fiber_spawn.rb
parent03806d2b44c2d3cee75258ee9e83d671e751baeb (diff)
downloadrainbows-6d46978bdc8d2ee4263431ecdcada53389b12597.tar.gz
Reduces confusion for constant resolution/scoping rules
and lowers LoC.
Diffstat (limited to 'lib/rainbows/fiber_spawn.rb')
-rw-r--r--lib/rainbows/fiber_spawn.rb47
1 files changed, 21 insertions, 26 deletions
diff --git a/lib/rainbows/fiber_spawn.rb b/lib/rainbows/fiber_spawn.rb
index 1a0da04..17bd884 100644
--- a/lib/rainbows/fiber_spawn.rb
+++ b/lib/rainbows/fiber_spawn.rb
@@ -1,33 +1,28 @@
 # -*- encoding: binary -*-
 require 'rainbows/fiber'
 
-module Rainbows
+# Simple Fiber-based concurrency model for 1.9.  This spawns a new
+# Fiber for every incoming client connection and the root Fiber for
+# scheduling and connection acceptance.  This exports a streaming
+# "rack.input" with lightweight concurrency.  Applications are
+# strongly advised to wrap all slow IO objects (sockets, pipes) using
+# the Rainbows::Fiber::IO class whenever possible.
+module Rainbows::FiberSpawn
+  include Rainbows::Fiber::Base
 
-  # Simple Fiber-based concurrency model for 1.9.  This spawns a new
-  # Fiber for every incoming client connection and the root Fiber for
-  # scheduling and connection acceptance.  This exports a streaming
-  # "rack.input" with lightweight concurrency.  Applications are
-  # strongly advised to wrap all slow IO objects (sockets, pipes) using
-  # the Rainbows::Fiber::IO class whenever possible.
-
-  module FiberSpawn
-    include Fiber::Base
-
-    def worker_loop(worker) # :nodoc:
-      init_worker_process(worker)
-      Fiber::Base.setup(self.class, app)
-      limit = worker_connections
-
-      begin
-        schedule do |l|
-          break if G.cur >= limit
-          io = l.kgio_tryaccept or next
-          ::Fiber.new { process(io) }.resume
-        end
-      rescue => e
-        Error.listen_loop(e)
-      end while G.alive || G.cur > 0
-    end
+  def worker_loop(worker) # :nodoc:
+    init_worker_process(worker)
+    Rainbows::Fiber::Base.setup(self.class, app)
+    limit = worker_connections
 
+    begin
+      schedule do |l|
+        break if G.cur >= limit
+        io = l.kgio_tryaccept or next
+        Fiber.new { process(io) }.resume
+      end
+    rescue => e
+      Rainbows::Error.listen_loop(e)
+    end while G.alive || G.cur > 0
   end
 end