diff options
Diffstat (limited to 'lib/rainbows/epoll/server.rb')
-rw-r--r-- | lib/rainbows/epoll/server.rb | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/rainbows/epoll/server.rb b/lib/rainbows/epoll/server.rb index 58e7653..ab5a49f 100644 --- a/lib/rainbows/epoll/server.rb +++ b/lib/rainbows/epoll/server.rb @@ -2,16 +2,14 @@ # :enddoc: module Rainbows::Epoll::Server @@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 - EP = Rainbows::Epoll::EP + EP = Rainbows::EP - def self.run - LISTENERS.each { |sock| EP.add(sock.extend(self), IN) } - Rainbows::Epoll.loop + def self.nr + @@nr end # rearms all listeners when there's a free slot @@ -19,6 +17,10 @@ module Rainbows::Epoll::Server THRESH == (@@nr -= 1) and LISTENERS.each { |sock| EP.set(sock, IN) } end + def self.extended(sock) + EP.set(sock, IN) + end + def epoll_run return EP.delete(self) if @@nr >= MAX while io = kgio_tryaccept |