class WSDirector::Result
Handle results from all clients from the group
Attributes
all[R]
errors[R]
failures[R]
group[R]
sampling_counter[R]
sampling_mutex[R]
success[R]
Public Class Methods
new(group)
click to toggle source
# File lib/wsdirector/result.rb, line 8 def initialize(group) @group = group @errors = Concurrent::Array.new @all = Concurrent::AtomicFixnum.new(0) @failures = Concurrent::AtomicFixnum.new(0) @sampling_mutex = Mutex.new @sampling_counter = Hash.new { |h, k| h[k] = 0 } end
Public Instance Methods
failed(error_message)
click to toggle source
Called when client failed
# File lib/wsdirector/result.rb, line 25 def failed(error_message) errors << error_message all.increment failures.increment end
failures_count()
click to toggle source
# File lib/wsdirector/result.rb, line 39 def failures_count failures.value end
succeed()
click to toggle source
Called when client successfully finished it's work
# File lib/wsdirector/result.rb, line 20 def succeed all.increment end
success?()
click to toggle source
# File lib/wsdirector/result.rb, line 31 def success? failures.value.zero? end
total_count()
click to toggle source
# File lib/wsdirector/result.rb, line 35 def total_count all.value end
track_sample(id, max)
click to toggle source
# File lib/wsdirector/result.rb, line 43 def track_sample(id, max) sampling_mutex.synchronize do return false if sampling_counter[id] >= max sampling_counter[id] += 1 true end end