add RevThreadPool concurrency model
[rainbows.git] / lib / rainbows / rev / master.rb
blob5c112c625eead33b01ecc8022c06f20061e6cd04
1 # -*- encoding: binary -*-
2 require 'rainbows/rev'
4 RUBY_VERSION =~ %r{\A1\.8} && ::Rev::VERSION < "0.3.2" and
5   warn "Rainbows::RevThreadSpawn + Rev (< 0.3.2)" \
6        " does not work well under Ruby 1.8"
8 module Rainbows
10   module Rev
11     class Master < ::Rev::AsyncWatcher
13       def initialize(queue)
14         super()
15         @queue = queue
16       end
18       def <<(output)
19         @queue << output
20         signal
21       end
23       def on_signal
24         client, response = @queue.pop
25         client.response_write(response)
26       end
27     end
28   end
29 end