doc: add HACKING document
[rainbows.git] / lib / rainbows / coolio / master.rb
blobb253e67309394741b1473bb0b2f376e74db56bfa
1 # -*- encoding: binary -*-
2 # :enddoc:
3 require 'thread'
4 class Rainbows::Coolio::Master < Coolio::IOWatcher
6   def initialize(queue)
7     @reader, @writer = Kgio::Pipe.new
8     super(@reader)
9     @queue = queue
10     @wbuf, @rbuf = "\0", "\0"
11   end
13   def <<(output)
14     @queue << output
15     @writer.kgio_trywrite(@wbuf)
16   end
18   def on_readable
19     if String === @reader.kgio_tryread(1, @rbuf)
20       client, response = @queue.pop
21       client.response_write(response)
22     end
23   end
24 end