Class: CgminerApiClient::MinerResult

Inherits:
Data
  • Object
show all
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.message}"
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

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error

Returns:

  • (Object)

    the current value of error



25
26
27
# File 'lib/cgminer_api_client/miner_result.rb', line 25

def error
  @error
end

#minerObject (readonly)

Returns the value of attribute miner

Returns:

  • (Object)

    the current value of miner



25
26
27
# File 'lib/cgminer_api_client/miner_result.rb', line 25

def miner
  @miner
end

#valueObject (readonly)

Returns the value of attribute value

Returns:

  • (Object)

    the current value of 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

Returns:

  • (Boolean)


38
39
40
# File 'lib/cgminer_api_client/miner_result.rb', line 38

def failed?
  !ok?
end

#ok?Boolean

Returns:

  • (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