Sha256: e6a0ee54bf55239115d48ef04618a4e81f9e896a2363304f848aead77c8d9a9c
Contents?: true
Size: 1.28 KB
Versions: 2
Compression:
Stored size: 1.28 KB
Contents
module Muxer class Multiplexer attr_reader :requests def initialize @requests = [] @timeout = nil end def add_url(url, timeout = nil) request = Request.new request.url = url request.timeout = timeout if timeout requests << request end def execute responses = {succeeded: [], failed: [], pending: []} looping = true finish = Time.now + @timeout if @timeout EventMachine.run do requests.each do |request| responses[:pending] << request.process! end EM::PeriodicTimer.new(0.01) do responses[:pending].each do |pending| # binding.pry if pending.completed? responses[:pending].delete(pending) if pending.error.nil? responses[:succeeded] << pending else responses[:failed] << pending end end end if @timeout && Time.now >= finish responses[:pending].each do |pending| responses[:failed] << pending end responses[:pending] = [] EM.stop end if responses[:pending].empty? EM.stop end end end responses end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
muxer-0.1.0 | lib/muxer/multiplexer.rb |
muxer-0.0.4 | lib/muxer/multiplexer.rb |