def each(status, identities = nil)
      choices = if identities && !identities.empty?
        identities.inject([]) { |c, i| if b = @brokers_hash[i] then c << b else c end }
      else
        @brokers
      end
      choices.select do |b|
        if b.send("#{status}?".to_sym)
          yield(b) if block_given?
          true
        end
      end
    end
def each(status, identities = nil)
      choices = if identities && !identities.empty?
        identities.inject([]) { |c, i| if b = @brokers_hash[i] then c << b else c end }
      else
        @brokers
      end
      choices.select do |b|
        if b.send("#{status}?".to_sym)
          yield(b) if block_given?
          true
        end
      end
    end
Iterate over clients that have the specified status

 === Parameters
 status(String):: Status for selecting: :usable, :connected, :failed
 identities(Array):: Identity of brokers to be considered, nil or empty array means all brokers

 === Block
 Optional block with following parameters to be called for each broker client selected
   broker(BrokerClient):: Broker client

 === Return
 (Array):: Selected broker clients