Class: CgminerApiClient::MinerResult
- Inherits:
-
Data
- Object
- Data
- CgminerApiClient::MinerResult
- Defined in:
- lib/cgminer_api_client/miner_result.rb
Overview
A single per-miner outcome from a MinerPool query. Either a successful response (error is nil, value holds the parsed data) or a failure (value is nil, error holds the exception).
Immutable value object backed by Data.define, which gives us
, hash, eql?, inspect, to_h, and deconstruct_keys for pattern
matching for free.
Usage:
result = pool.summary.first
if result.ok?
puts result.value[:mhs_av]
else
warn "#{result.miner.host}: #{result.error.}"
end
Or with pattern matching:
case result
in { ok?: true, value: } then use(value)
in { ok?: false, error: } then log(error)
end
Instance Attribute Summary collapse
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#miner ⇒ Object
readonly
Returns the value of attribute miner.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Class Method Summary collapse
Instance Method Summary collapse
- #failed? ⇒ Boolean
- #ok? ⇒ Boolean
-
#raise! ⇒ Object
Re-raise the captured error, or return the value if successful.
Instance Attribute Details
#error ⇒ Object (readonly)
Returns the value of attribute error
25 26 27 |
# File 'lib/cgminer_api_client/miner_result.rb', line 25 def error @error end |
#miner ⇒ Object (readonly)
Returns the value of attribute miner
25 26 27 |
# File 'lib/cgminer_api_client/miner_result.rb', line 25 def miner @miner end |
#value ⇒ Object (readonly)
Returns the value of attribute value
25 26 27 |
# File 'lib/cgminer_api_client/miner_result.rb', line 25 def value @value end |
Class Method Details
.failure(miner, error) ⇒ Object
30 31 32 |
# File 'lib/cgminer_api_client/miner_result.rb', line 30 def self.failure(miner, error) new(miner: miner, value: nil, error: error) end |
.success(miner, value) ⇒ Object
26 27 28 |
# File 'lib/cgminer_api_client/miner_result.rb', line 26 def self.success(miner, value) new(miner: miner, value: value, error: nil) end |
Instance Method Details
#failed? ⇒ Boolean
38 39 40 |
# File 'lib/cgminer_api_client/miner_result.rb', line 38 def failed? !ok? end |
#ok? ⇒ Boolean
34 35 36 |
# File 'lib/cgminer_api_client/miner_result.rb', line 34 def ok? error.nil? end |
#raise! ⇒ Object
Re-raise the captured error, or return the value if successful. Equivalent to ‘result.ok? ? result.value : raise(result.error)` but shorter at call sites.
45 46 47 48 49 |
# File 'lib/cgminer_api_client/miner_result.rb', line 45 def raise! raise error if failed? value end |