Class: CgminerApiClient::PoolResult

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#resultsObject (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

Returns:

  • (Boolean)


64
65
66
# File 'lib/cgminer_api_client/pool_result.rb', line 64

def all_successful?
  @results.all?(&:ok?)
end

#any_failed?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/cgminer_api_client/pool_result.rb', line 72

def any_failed?
  @results.any?(&:failed?)
end

#any_succeeded?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/cgminer_api_client/pool_result.rb', line 68

def any_succeeded?
  @results.any?(&:ok?)
end

#eachObject



32
33
34
# File 'lib/cgminer_api_client/pool_result.rb', line 32

def each(&)
  @results.each(&)
end

#empty?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/cgminer_api_client/pool_result.rb', line 40

def empty?
  @results.empty?
end

#errorsObject



52
53
54
# File 'lib/cgminer_api_client/pool_result.rb', line 52

def errors
  @results.reject(&:ok?).map(&:error)
end

#failedObject



60
61
62
# File 'lib/cgminer_api_client/pool_result.rb', line 60

def failed
  @results.reject(&:ok?)
end

#hashObject



90
91
92
# File 'lib/cgminer_api_client/pool_result.rb', line 90

def hash
  @results.hash
end

#sizeObject



36
37
38
# File 'lib/cgminer_api_client/pool_result.rb', line 36

def size
  @results.size
end

#successfulObject



56
57
58
# File 'lib/cgminer_api_client/pool_result.rb', line 56

def successful
  @results.select(&:ok?)
end

#to_aObject



44
45
46
# File 'lib/cgminer_api_client/pool_result.rb', line 44

def to_a
  @results.dup
end

#valuesObject



48
49
50
# File 'lib/cgminer_api_client/pool_result.rb', line 48

def values
  @results.select(&:ok?).map(&:value)
end