initial edge-triggered epoll model
[rainbows.git] / lib / rainbows / epoll.rb
blob8698f78eedd489d6aa80bf955f08b943c401a6bc
1 # -*- encoding: binary -*-
2 # :enddoc:
3 require 'sleepy_penguin'
4 require 'sendfile'
6 # Edge-triggered epoll concurrency model.  This is extremely unfair
7 # and optimized for throughput at the expense of fairness
8 module Rainbows::Epoll
9   include Rainbows::Base
10   autoload :State, 'rainbows/epoll/state'
11   autoload :Server, 'rainbows/epoll/server'
12   autoload :Client, 'rainbows/epoll/client'
13   autoload :ResponsePipe, 'rainbows/epoll/response_pipe'
14   autoload :ResponseChunkPipe, 'rainbows/epoll/response_chunk_pipe'
16   def worker_loop(worker) # :nodoc:
17     init_worker_process(worker)
18     Rainbows::EvCore.setup
19     Rainbows::Client.__send__ :include, Client
20     Server.run
21   end
22 end