# File lib/poll.rb, line 295 def poll( timeout=-1 ) # :yields: io, eventMask raise TypeError, "Timeout must be Numeric, not a #{timeout.type.name}" unless timeout.kind_of? Numeric timeout = timeout.to_f @events.clear unless @masks.empty? @events = _poll( @masks.to_a, timeout*1000 ) # For each io that had an event happen, call any callback associated # with it, or failing that, any provided block @events.each {|io,evmask| if @callbacks.has_key?( io ) args = @callbacks[ io ][ :args ] @callbacks[ io ][ :callback ].call( io, EventMask::new(evmask), *args ) elsif block_given? yield( io, EventMask::new(evmask) ) end } end @events.default = EventMask::new( 0 ) return @events.length end