Class: CgminerApiClient::PoolResult
- Inherits:
-
Object
- Object
- CgminerApiClient::PoolResult
- Includes:
- Enumerable
- Defined in:
- lib/cgminer_api_client/pool_result.rb
Overview
An Enumerable wrapper around Array<MinerResult> returned from every MinerPool query. Preserves miner order (position N in the pool maps to position N in the result). Callers can either iterate per-Result for full control, or use the high-level helpers for common cases.
Usage:
result = pool.summary
result.values # [{mhs_av: ..., elapsed: ...}] — successes only
result.errors # [<ConnectionError>, ...] — failures only
result.successful # [<MinerResult>, ...] — ok? Results
result.failed # [<MinerResult>, ...] — !ok? Results
result.all_successful? # true if every miner succeeded
result.any_succeeded? # true if at least one miner succeeded
result.any_failed? # true if any miner failed
result[0] # MinerResult at index 0
result[miner] # MinerResult for a specific Miner instance
result["10.0.0.1:4028"] # MinerResult by "host:port" string
result.each { |r| r.miner.host } # iterates MinerResult instances
Instance Attribute Summary collapse
-
#results ⇒ Object
readonly
Returns the value of attribute results.
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
-
#[](key) ⇒ Object
Lookup by integer index, Miner instance, or “host:port” string.
- #all_successful? ⇒ Boolean
- #any_failed? ⇒ Boolean
- #any_succeeded? ⇒ Boolean
- #each ⇒ Object
- #empty? ⇒ Boolean
- #errors ⇒ Object
- #failed ⇒ Object
- #hash ⇒ Object
-
#initialize(results) ⇒ PoolResult
constructor
A new instance of PoolResult.
- #size ⇒ Object
- #successful ⇒ Object
- #to_a ⇒ Object
- #values ⇒ Object
Constructor Details
#initialize(results) ⇒ PoolResult
Returns a new instance of PoolResult.
28 29 30 |
# File 'lib/cgminer_api_client/pool_result.rb', line 28 def initialize(results) @results = results.freeze end |
Instance Attribute Details
#results ⇒ Object (readonly)
Returns the value of attribute results.
26 27 28 |
# File 'lib/cgminer_api_client/pool_result.rb', line 26 def results @results end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
85 86 87 |
# File 'lib/cgminer_api_client/pool_result.rb', line 85 def ==(other) other.is_a?(self.class) && @results == other.results end |
#[](key) ⇒ Object
Lookup by integer index, Miner instance, or “host:port” string.
77 78 79 80 81 82 83 |
# File 'lib/cgminer_api_client/pool_result.rb', line 77 def [](key) case key when Integer then @results[key] when String then @results.find { |r| "#{r.miner.host}:#{r.miner.port}" == key } else @results.find { |r| r.miner == key } end end |
#all_successful? ⇒ Boolean
64 65 66 |
# File 'lib/cgminer_api_client/pool_result.rb', line 64 def all_successful? @results.all?(&:ok?) end |
#any_failed? ⇒ Boolean
72 73 74 |
# File 'lib/cgminer_api_client/pool_result.rb', line 72 def any_failed? @results.any?(&:failed?) end |
#any_succeeded? ⇒ Boolean
68 69 70 |
# File 'lib/cgminer_api_client/pool_result.rb', line 68 def any_succeeded? @results.any?(&:ok?) end |
#each ⇒ Object
32 33 34 |
# File 'lib/cgminer_api_client/pool_result.rb', line 32 def each(&) @results.each(&) end |
#empty? ⇒ Boolean
40 41 42 |
# File 'lib/cgminer_api_client/pool_result.rb', line 40 def empty? @results.empty? end |
#errors ⇒ Object
52 53 54 |
# File 'lib/cgminer_api_client/pool_result.rb', line 52 def errors @results.reject(&:ok?).map(&:error) end |
#failed ⇒ Object
60 61 62 |
# File 'lib/cgminer_api_client/pool_result.rb', line 60 def failed @results.reject(&:ok?) end |
#hash ⇒ Object
90 91 92 |
# File 'lib/cgminer_api_client/pool_result.rb', line 90 def hash @results.hash end |
#size ⇒ Object
36 37 38 |
# File 'lib/cgminer_api_client/pool_result.rb', line 36 def size @results.size end |
#successful ⇒ Object
56 57 58 |
# File 'lib/cgminer_api_client/pool_result.rb', line 56 def successful @results.select(&:ok?) end |
#to_a ⇒ Object
44 45 46 |
# File 'lib/cgminer_api_client/pool_result.rb', line 44 def to_a @results.dup end |
#values ⇒ Object
48 49 50 |
# File 'lib/cgminer_api_client/pool_result.rb', line 48 def values @results.select(&:ok?).map(&:value) end |