class CgminerApiClient::MinerPool

Attributes

miners[RW]

Public Class Methods

new() click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 7
def initialize
  load_miners!
end

Public Instance Methods

available_miners(force_reload = false) click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 31
def available_miners(force_reload = false)
  threads = @miners.collect do |miner|
    Thread.new do
      begin
        miner if miner.available?(force_reload)
      rescue
        nil
      end
    end
  end
  threads.each { |thr| thr.join }
  threads.collect(&:value).compact
end
method_missing(name, *args) click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 49
def method_missing(name, *args)
  query(name, *args)
end
query(method, *params) click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 16
def query(method, *params)
  threads = @miners.collect do |miner|
    Thread.new do
      begin
        miner.query(method, *params)
      rescue => e
        $stderr.puts "#{e.class}: #{e}"
        []
      end
    end
  end
  threads.each { |thr| thr.join }
  threads.collect(&:value)
end
reload_miners!() click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 11
def reload_miners!
  @miners = nil
  load_miners!
end
unavailable_miners(force_reload = false) click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 45
def unavailable_miners(force_reload = false)
  @miners - available_miners(force_reload)
end

Private Instance Methods

load_miners!() click to toggle source
# File lib/cgminer_api_client/miner_pool.rb, line 55
def load_miners!
  raise 'Please create config/miners.yml' unless File.exist?('config/miners.yml')

  miners_config = YAML.load_file('config/miners.yml')
  @miners = miners_config.collect{|miner|
    CgminerApiClient::Miner.new(
      miner['host'],
      miner['port'],
      miner['timeout']
    )
  }
end