Sha256: e2ae949f605bd3b4a61f4ac76b8171844ca8c3611475d342c0c65650530447ad
Contents?: true
Size: 758 Bytes
Versions: 23
Compression:
Stored size: 758 Bytes
Contents
# -*- encoding: binary -*- # :enddoc: module Rainbows::Epoll::Server @@nr = 0 IN = SleepyPenguin::Epoll::IN | SleepyPenguin::Epoll::ET MAX = Rainbows.server.worker_connections THRESH = MAX - 1 LISTENERS = Rainbows::HttpServer::LISTENERS EP = Rainbows::EP def self.nr @@nr end # rearms all listeners when there's a free slot def self.decr 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 @@nr += 1 # there's a chance the client never even sees epoll for simple apps io.epoll_once return EP.delete(self) if @@nr >= MAX end end end
Version data entries
23 entries across 23 versions & 1 rubygems