diff options
Diffstat (limited to 'lib/rainbows/epoll')
-rw-r--r-- | lib/rainbows/epoll/server.rb | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/lib/rainbows/epoll/server.rb b/lib/rainbows/epoll/server.rb index a8be3e2..96b3308 100644 --- a/lib/rainbows/epoll/server.rb +++ b/lib/rainbows/epoll/server.rb @@ -1,8 +1,9 @@ # -*- encoding: binary -*- # :nodoc: module Rainbows::Epoll::Server - IN = SleepyPenguin::Epoll::IN | SleepyPenguin::Epoll::ET @@nr = 0 + Rainbows::Epoll.nr_clients = lambda { @@nr } + IN = SleepyPenguin::Epoll::IN | SleepyPenguin::Epoll::ET MAX = Rainbows.server.worker_connections THRESH = MAX - 1 LISTENERS = Rainbows::HttpServer::LISTENERS @@ -10,14 +11,7 @@ module Rainbows::Epoll::Server def self.run LISTENERS.each { |sock| EP.add(sock.extend(self), IN) } - begin - EP.wait(nil, 1000) { |_, obj| obj.epoll_run } - Rainbows::Epoll.rerun - Rainbows::Epoll::Client.expire - rescue Errno::EINTR - rescue => e - Rainbows::Error.listen_loop(e) - end while Rainbows.tick || @@nr > 0 + Rainbows::Epoll.loop end # rearms all listeners when there's a free slot |