All pastes #794582 Raw Edit

Mine

public text v1 · immutable
#794582 ·published 2007-11-23 08:13 UTC
rendered paste body

$queue = Queue.new
$sq = SizedQueue.new(10)

# in here i define aps which is a list of access point objects, i'll spare you the code, it works fine. Results are an array of these objects

  su_query_proc = proc do
    aps.each do |ap|
      $queue << Proc.new do
        puts "Querying #{ap.ipaddress} for information about subscribers."
        poll = Poller.new(Object.const_get("#{$vendor}#{$model}APDevice"))
        poll.community = config["snmp_read_community"]
        poll.host = ap.ipaddress
        poll.setup
        poll.device.su_db_dump(poll.device.su_items)
        puts "Finished dumping subscriber data."
        sleep 0.1
      end
    end
    until $queue.empty?
      $sq << Thread.new(&$queue.pop)
    end
  end

  EventMachine::run do
    EventMachine::add_timer(30, su_query_proc)
  end

=begin
Errors out with this error:

poller.rb:177:in `<<': stopping only thread (ThreadError)
        note: use sleep to stop forever from poller.rb:177
        from /Library/Ruby/Gems/1.8/gems/eventmachine-0.9.0/lib/eventmachine.rb:1030:in `call'
        from /Library/Ruby/Gems/1.8/gems/eventmachine-0.9.0/lib/eventmachine.rb:1030:in `event_callback'
        from /Library/Ruby/Gems/1.8/gems/eventmachine-0.9.0/lib/eventmachine.rb:223:in `run_machine'
        from /Library/Ruby/Gems/1.8/gems/eventmachine-0.9.0/lib/eventmachine.rb:223:in `run'
        from poller.rb:186

line 177 is the $sq << Thread.new(&$queue.pop) line
line 186 is the add_timer() line.