class Async
Simple implementation of {docs.python.org/2/library/asyncore.html Python Asyncore}
Public Class Methods
check(timeout=false, map=false)
click to toggle source
Checks sockets from map objects using {IO.select} @param [Float] timeout timeout in seconds, passed to {IO.select} @param [Hash] map list of objects implements asyncore methods
# File lib/bellite.rb, line 17 def Async.check(timeout=false, map=false) if not map map = @@map end readable = [] writable = [] excepted = [] changedCount = 0 map.each do |obj| if obj.writable? if obj.fileno writable << obj.fileno end end if obj.readable? if obj.fileno readable << obj.fileno end end if obj.exceptable? if obj.fileno excepted << obj.fileno end end end if readable.size == 0 and writable.size == 0 and excepted.size == 0 return false end if (timeout) r,w,e = IO.select(readable, writable, excepted,timeout) else r,w,e = IO.select(readable, writable, excepted) end map.each do |obj| if obj.writable? and w.include? obj.fileno obj.handle_write_event end if obj.readable? and r.include? obj.fileno obj.handle_read_event end if obj.exceptable? and e.include? obj.fileno obj.handle_expt_event end end return r.size + w.size + e.size end
loop(timeout, map=false)
click to toggle source
Running check while at least one socket in objects map is connected @param [Float] timeout - timeout, passed to {.check} @param [Hash] map, passed to {.check}
# File lib/bellite.rb, line 73 def Async.loop(timeout, map=false) return Async.check(timeout, map) != false end