# File lib/moneta/server.rb, line 54 def mainloop if ios = IO.select(@ios, nil, @ios, TIMEOUT) ios[2].each do |io| io.close delete_client(io) end ios[0].each do |io| if io == @server if client = @server.accept @ios << client @clients[client] = '' end elsif io.closed? || io.eof? delete_client(io) else handle(io, @clients[io] << io.readpartial(0xFFFF)) end end end rescue SignalException => ex warn "Moneta::Server - #{ex.message}" raise if ex.signo == 15 || ex.signo == 2 # SIGTERM or SIGINT rescue Exception => ex warn "Moneta::Server - #{ex.message}" end